home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1996-09-27 | 178.9 KB | 4,729 lines
@use( file-reference sokoban-call-ref regexp-reference cmd-reference) @if-using(REF-TREE) @reference-begin-class 1 tags-mac-reference-file ------------------------- @reference-end @use(U-C-1) @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 1 < A > Description @reference-end @reference-begin-class 2 Description ------------- @reference-end @use(U-C-1) @use(U-C-2) @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 2 This is a libary file, supporting the standard (vi-known) tags file for moving to other positions and tag-completion! This package can only be used, if Origami is compiled to support regular expressions. < A > conditional compilation @reference-end @reference-begin-class 3 conditional compilation ------------------------- If this package is included more than once, all needed tags have to be defined at the first include! The following tags can be set: +------------------+----------------------------------------------------+ | Tag | Function | +------------------+----------------------------------------------------+ | E-G-T-ABUFF | enter-and-go-tags-adjacent-buffer | | E-G-T-BUFF | enter-and-go-tags-buffer | | E-O-T-ABUFF | enter-and-open-tags-adjacent-buffer | | E-O-T-BUFF | enter-and-open-tags-buffer | | F-G-T-ABUFF | find-and-go-tags-adjacent-buffer | | F-G-T-BUFF | find-and-go-tags-buffer | | F-O-T-ABUFF | find-and-open-tags-adjacent-buffer | | F-O-T-BUFF | find-and-open-tags-buffer | | FE-G-T-ABUFF | find-or-enter-and-go-tags-adjacent-buffer | | FE-G-T-BUFF | find-or-enter-and-go-tags-buffer | | FE-O-T-ABUFF | find-or-enter-and-open-tags-adjacent-buffer | | FE-O-T-BUFF | find-or-enter-and-open-tags-buffer | | GO-TAG-MARK | go-tag-mark | | I-T-FILE | insert-tags-file | | O-T-AFILE | open-adjacent-buffer-tags-file | | O-T-FILE | open-buffer-tags-file | | Q-U-G-T-BUFF | quit-unchanged-to-other-buffer | | S-N-I-T | search-next-incorrect-tag-entry | | S-U-T-FILE | set-user-tag | | T-COMP | tag-completion | +------------------+----------------------------------------------------+ If your filesystems uses special names for absolut filenames, define the tag ROOT-TEST and a function, returning true, if the word starting at current cursor position is an absolute filename. @reference-end @reference-begin-class 2 < B > error/message return @reference-end @reference-begin-class 4 error/message return ---------------------- The OCL-variable tags-error contains the error/message coding for the tags actions: +-------+----------------------------------------------------+ | Value | Error/Message | +-------+----------------------------------------------------+ | 0 | ok | | 1 | tagged file edited more than once | | 2 | no tag iven | | 3 | cannot open tags-file | | 4 | no valid tag in tags-file | | 5 | cannot open tagged file | | 6 | tag notfound in tagged file | | 7 | File edted only once | | 8 | Currentbuffer is changed | | 9 | position not found in other buffer (folds entered) | | 10 | position not found in other buffer | | 11 | using yur tags file first | | 12 | using dfault tags files | | 13 | Sorry, o regular expressions! | | * | unspecified error | +-------+----------------------------------------------------+ @reference-end @use(U-C-2) @use(U-C-3) @use(ref-viewer-1-0-USED) @use(U-C-4) @use(ref-viewer-1-2-USED) @fi @fi @fi @if-using ( complete file-reference ) @if-using(REF-TREE) @reference-begin-class 1 < B > Tags file @reference-end @reference-begin-class 5 Tags file ----------- @reference-end @use(U-C-1) @use(U-C-5) @fi @if-using ( complete file-reference ) @if-using(REF-TREE) @reference-begin-class 5 If you want to use the tags facilities, Origami needs to read a special tags file. The functions try to use the first of the following files: +--------------------------------------------------+ | File | +--------------------------------------------------+ | directory-of-file/tags or file/tags (*) | | tags | | ~/tags | | ~/.oritags | +--------------------------------------------------+ * depending on the type of the current file. During the editor session, you can specify another tags file, using function set-user-tags-file. Entries in the tags file are normal tags entries: < A > tag filename search-exp @reference-end @reference-begin-class 6 tag filename search-exp ------------------------- +------------+--------------------------------------------------+ | Item | Meaning | +------------+--------------------------------------------------+ | tag | name of a tag, a string | | filename | a string | | search-exp | /^text$/ | | | ?^text$? | | | /^text/ | | | ?^text? | | | /text$/ | | | ?text$? | | | /text/ | | | ?text? | +------------+--------------------------------------------------+ These entries might be produced by ctags! @reference-end @reference-begin-class 5 < B > tag filename line-number @reference-end @reference-begin-class 7 tag filename line-number -------------------------- +------------+--------------------------------------------------+ | Item | Meaning | +------------+--------------------------------------------------+ | tag | name of a tag, a string | | filename | a string | | line-numbe | a sequence of digits 0..9 | +------------+--------------------------------------------------+ These entries might be produced by ctags! @reference-end @reference-begin-class 5 < C > tag file Bexpression @reference-end @reference-begin-class 8 tag file Bexpression ---------------------- +------------+--------------------------------------------------+ | Item | Meaning | +------------+--------------------------------------------------+ | tag | name of a tag, a string | | filename | a string | | expression | a basic-regular search expression | +------------+--------------------------------------------------+ These entries are an extension to the standard tags syntax! @reference-end @reference-begin-class 5 < D > tag file Eexpression @reference-end @reference-begin-class 9 tag file Eexpression ---------------------- +------------+--------------------------------------------------+ | Item | Meaning | +------------+--------------------------------------------------+ | tag | name of a tag, a string | | filename | a string | | expression | a extended-regular search expression | +------------+--------------------------------------------------+ These entries are an extension to the standard tag syntax! @reference-end @reference-begin-class 5 < E > string @reference-end @reference-begin-class 10 string -------- `tag-completion' reads only the first word on the lines. So a line containing a simple string can be used to add keywords for tag-completion! Such short entries cannot be used for jumping to a tagged position! @reference-end @use(U-C-5) @use(U-C-6) @use(ref-viewer-1-0-USED) @use(U-C-7) @use(U-C-8) @use(U-C-9) @use(U-C-10) @use(ref-viewer-1-5-USED) @fi @fi @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using(REF-TREE) @reference-begin-class 1 < C > Tags @reference-end @reference-begin-class 11 Tags ------ @reference-end @use(U-C-1) @use(U-C-11) @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using(REF-TREE) @reference-begin-class 11 Tags are defined using two character sets: c-tags-x-word-set / c-tags-word-set tag names are buildt using only these characters, c-tags-x-word-set is only used, if language None is active. c-tags-start-word-set: first character has to be in this set Default values are: ( defset c-tags-start-word-set ( alpha ) ) ( defset c-tags-word-set ( alpha digit "_ ) ) ( defset c-tags-x-word-set ( c-tags-word-set "- ) ) Changing these sets at runtime, changes the tag-search algorythm! c-tags-start-word-set has to be a subset of c-tags-word-set! @reference-end @use(U-C-11) @use(ref-viewer-1-0-USED) @fi @fi @fi @if-using ( complete quit-unchanged-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-go-ref fe-ago-ref go-tag-mark-ref find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref set-tf-ref in-tf-ref o-tf-ref ao-tf-ref tag-completion ) @if-using(REF-TREE) @reference-begin-class 1 < D > Functions and macros @reference-end @reference-begin-class 12 Functions and macros ---------------------- @reference-end @use(U-C-1) @use(U-C-12) @fi @if-using ( complete quit-unchanged-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using(REF-TREE) @reference-begin-class 12 < A > quit-unchanged-to-other-buffer @reference-end @reference-begin-class 13 quit-unchanged-to-other-buffer -------------------------------- If the current buffer contains a unchanged file, also edited in other buffer[s], the macro tries to reach the same position in the other buffer. Searching with a regular expression for the current line does not exit entered folds! @reference-end @use(U-C-12) @use(U-C-13) @use(ref-viewer-1-0-USED) @fi @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using ( complete go-tag-mark-ref ) @if-using(REF-TREE) @reference-begin-class 12 < B > go-tag-mark @reference-end @reference-begin-class 14 go-tag-mark ------------- This is the function, used by all enter/find tags commands. It uses three boolean arguments: adjacent open buffer adjacent unique switch to existing buffer, if possible extend is tags given as prefix It uses the last value in search-history. < A > Tags < B > quit-unchanged-to-other-buffer @reference-end @use(U-C-12) @use(U-C-14) @use(ref-viewer-1-2-USED) @fi @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref ) @if-using(REF-TREE) @reference-begin-class 12 < C > open tags buffer @reference-end @reference-begin-class 15 open tags buffer ------------------ @reference-end @use(U-C-12) @use(U-C-15) @fi @if-using ( find-open-ref ) @if-using(REF-TREE) @reference-begin-class 15 < A > find-and-open-tags-buffer @reference-end @reference-begin-class 16 find-and-open-tags-buffer --------------------------- Open a new buffer, using the word under the cursor as tag. < A > Tags @reference-end @use(U-C-15) @use(U-C-16) @use(ref-viewer-1-1-USED) @fi @fi @if-using ( find-aopen-ref ) @if-using(REF-TREE) @reference-begin-class 15 < B > find-and-open-tags-adjacent-buffer @reference-end @reference-begin-class 17 find-and-open-tags-adjacent-buffer ------------------------------------ Open a new adjacent buffer, using the word under the cursor as tag. < A > Tags @reference-end @use(U-C-15) @use(U-C-17) @use(ref-viewer-1-1-USED) @fi @fi @if-using ( enter-open-ref ) @if-using(REF-TREE) @reference-begin-class 15 < C > enter-and-open-tags-buffer @reference-end @reference-begin-class 18 enter-and-open-tags-buffer ---------------------------- Open a new buffer for a tag, the macros prompt for. Using filename-completion will end the input and searches the first tag, beginning with the given string! < A > Tags enter-and-open-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-15) @use(U-C-18) @use(ref-viewer-1-1-USED) @fi @fi @if-using ( enter-aopen-ref ) @if-using(REF-TREE) @reference-begin-class 15 < D > enter-and-open-tags-adjacent-buffer @reference-end @reference-begin-class 19 enter-and-open-tags-adjacent-buffer ------------------------------------- Open a new adjacent buffer for a tag, the macros prompt for. Using filename-completion will end the input and searches the first tag, beginning with the given string! < A > Tags enter-and-open-tags-adjacent buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-15) @use(U-C-19) @use(ref-viewer-1-1-USED) @use(ref-viewer-1-4-USED) @fi @fi @fi @if-using ( complete find-go-ref find-ago-ref enter-go-ref enter-ago-ref ) @if-using(REF-TREE) @reference-begin-class 12 < D > go tags buffer @reference-end @reference-begin-class 20 go tags buffer ---------------- @reference-end @use(U-C-12) @use(U-C-20) @fi @if-using ( find-go-ref ) @if-using(REF-TREE) @reference-begin-class 20 < A > find-and-go-tags-buffer @reference-end @reference-begin-class 21 find-and-go-tags-buffer ------------------------- Open a new buffer, using the word under the cursor as tag. Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers. < A > Tags < B > quit-unchanged-to-other-buffer @reference-end @use(U-C-20) @use(U-C-21) @use(ref-viewer-1-2-USED) @fi @fi @if-using ( find-ago-ref ) @if-using(REF-TREE) @reference-begin-class 20 < B > find-and-go-tags-adjacent-buffer @reference-end @reference-begin-class 22 find-and-go-tags-adjacent-buffer ---------------------------------- Open a new adjacent buffer, using the word under the cursor as tag. Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers. < A > Tags < B > quit-unchanged-to-other-buffer @reference-end @use(U-C-20) @use(U-C-22) @use(ref-viewer-1-2-USED) @fi @fi @if-using ( enter-go-ref ) @if-using(REF-TREE) @reference-begin-class 20 < C > enter-and-go-tags-buffer @reference-end @reference-begin-class 23 enter-and-go-tags-buffer -------------------------- Open a new buffer for a tag, the macros prompt for. Using filename-completion will end the input and searches the first tag, beginning with the given string! Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers. < A > Tags < B > quit-unchanged-to-other-buffer enter-and-go-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-20) @use(U-C-23) @use(ref-viewer-1-2-USED) @fi @fi @if-using ( enter-ago-ref ) @if-using(REF-TREE) @reference-begin-class 20 < D > enter-and-go-tags-adjacent-buffer @reference-end @reference-begin-class 24 enter-and-go-tags-adjacent-buffer ----------------------------------- Open a new buffer for a tag, the macros prompt for. Using filename-completion will end the input and searches the first tag, beginning with the given string! Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers. < A > Tags < B > quit-unchanged-to-other-buffer enter-and-go-tags-adjacent-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-20) @use(U-C-24) @use(ref-viewer-1-2-USED) @use(ref-viewer-1-4-USED) @fi @fi @fi @if-using ( complete fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref) @if-using(REF-TREE) @reference-begin-class 12 < E > find or enter tags buffer @reference-end @reference-begin-class 25 find or enter tags buffer --------------------------- @reference-end @use(U-C-12) @use(U-C-25) @fi @if-using ( fe-open-ref ) @if-using(REF-TREE) @reference-begin-class 25 < A > find-or-enter-and-open-tags-buffer @reference-end @reference-begin-class 26 find-or-enter-and-open-tags-buffer ------------------------------------ Open a new buffer for a tag, using the word under the cursor. If failling, the macros prompts for a tag. Using filename-completion will end the input and searches the first tag, beginning with the given string! < A > Tags find-or-enter-and-open-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-25) @use(U-C-26) @use(ref-viewer-1-1-USED) @fi @fi @if-using ( fe-aopen-ref ) @if-using(REF-TREE) @reference-begin-class 25 < B > find-or-enter-and-open-tags-adjacent-buffer @reference-end @reference-begin-class 27 find-or-enter-and-open-tags-adjacent-buffer --------------------------------------------- Open a new adjacent buffer for a tag, using the word under the cursor. If failling, the macros prompts for a tag. Using filename-completion will end the input and searches the first tag, beginning with the given string! < A > Tags find-or-enter-and-open-tags-adjacent-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-25) @use(U-C-27) @use(ref-viewer-1-1-USED) @fi @fi @if-using ( fe-go-ref ) @if-using(REF-TREE) @reference-begin-class 25 < C > find-or-enter-and-go-tags-buffer @reference-end @reference-begin-class 28 find-or-enter-and-go-tags-buffer ---------------------------------- Open a new buffer for a tag, using the word under the cursor. If failling, the macros prompts for a tag. Using filename-completion will end the input and searches the first tag, beginning with the given string! Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers. < A > Tags < B > quit-unchanged-to-other-buffer find-or-enter-and-go-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-25) @use(U-C-28) @use(ref-viewer-1-2-USED) @fi @fi @if-using ( fe-ago-ref ) @if-using(REF-TREE) @reference-begin-class 25 < D > find-or-enter-and-go-tags-adjacent-buffer @reference-end @reference-begin-class 29 find-or-enter-and-go-tags-adjacent-buffer ------------------------------------------- Open a new adjacent buffer for a tag, using the word under the cursor. If failling, the macros prompts for a tag. Using filename-completion will end the input and searches the first tag, beginning with the given string! Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers. < A > Tags < B > quit-unchanged-to-other-buffer find-or-enter-and-go-tags-adjacent-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! @reference-end @use(U-C-25) @use(U-C-29) @use(ref-viewer-1-2-USED) @use(ref-viewer-1-4-USED) @fi @fi @fi @fi @if-using ( complete set-tf-ref in-tf-ref o-tf-ref ao-tf-ref ) @if-using ( complete set-tf-ref in-tf-ref o-tf-ref ao-tf-ref ) @if-using(REF-TREE) @reference-begin-class 12 < F > handling tags file @reference-end @reference-begin-class 30 handling tags file -------------------- @reference-end @use(U-C-12) @use(U-C-30) @fi @if-using ( set-tf-ref ) @if-using(REF-TREE) @reference-begin-class 30 < A > set-user-tag @reference-end @reference-begin-class 31 set-user-tag -------------- Don't use the default tags-file, but define your own. You can control the first tags file by other funtions, setting the history tags-file to the correct filename. This history will be used, if OCL variable tags-user-tags-file is not set to false=0! @reference-end @use(U-C-30) @use(U-C-31) @use(ref-viewer-1-0-USED) @fi @fi @if-using ( in-tf-ref ) @if-using(REF-TREE) @reference-begin-class 30 < B > insert-tags-file @reference-end @reference-begin-class 32 insert-tags-file ------------------ Like insert-file, but does not prompt for a filename. @reference-end @use(U-C-30) @use(U-C-32) @use(ref-viewer-1-0-USED) @fi @fi @if-using ( o-tf-ref ) @if-using(REF-TREE) @reference-begin-class 30 < C > open-buffer-tags-file @reference-end @reference-begin-class 33 open-buffer-tags-file ----------------------- Like open-buffer, but does not prompt for a filename. If no tags file can be reached, the command will be ignored. @reference-end @use(U-C-30) @use(U-C-33) @use(ref-viewer-1-0-USED) @fi @fi @if-using ( ao-tf-ref ) @if-using(REF-TREE) @reference-begin-class 30 < D > open-adjacent-buffer-tags-file @reference-end @reference-begin-class 34 open-adjacent-buffer-tags-file -------------------------------- Like open-adjacent-buffer, but does not prompt for a filename. If no tags file can be reached, the command will be ignored. @reference-end @use(U-C-30) @use(U-C-34) @use(ref-viewer-1-0-USED) @use(ref-viewer-1-4-USED) @fi @fi @fi @fi @if-using ( complete tag-completion ) @if-using(REF-TREE) @reference-begin-class 12 < G > tag-completion @reference-end @reference-begin-class 35 tag-completion ---------------- Similar to origamis filename-completion. This function looks only at the tag names. You may add your own symbols for completion. These entries may be lines containing only the completion string! This function can not be used inside prompts! @reference-end @use(U-C-12) @use(U-C-35) @use(ref-viewer-1-0-USED) @use(ref-viewer-1-7-USED) @fi @fi @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 1 < E > Hooks @reference-end @reference-begin-class 36 Hooks ------- @reference-end @use(U-C-1) @use(U-C-36) @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 36 The libary defines a macro `abort-hook-add' and a OCL tag ABORT-HOOK-ADD. This macro should be added to your abort-macro! If needed, an existing macro `abort-hook-add' will be integrated! The function `set-user-tags-file' can be simulated, by changing the value of history `tags-file' and setting variable `tags-user-tags-file' to non-zero. If `tags-user-tags-file' is zero, the default list is used. @reference-end @use(U-C-36) @use(ref-viewer-1-0-USED) @use(ref-viewer-1-5-USED) @fi @fi @fi @if-using(REF-TREE) @reference-begin-class 37 sokoban-reference-file ------------------------ @reference-end @use(U-C-37) @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 37 < A > Description @reference-end @reference-begin-class 38 Description ------------- @reference-end @use(U-C-37) @use(U-C-38) @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 38 This library defines a function for playing the well known game `Sokoban'. Therefor the file `~/.orisokoban' is used to store the game boards. The file will be generated automatically with language Inmos, to prevent problems with different fold marks. Each level is stored in a fold, using the following coding: # wall . base $ stone * stone on base @ cursor + cursor on base The library defines a own keyboard. So it can only be used for bindings with multiple modes. The mode is named `sokoban-kbd'. The functions soko-go-or-push-up, soko-run-or-push-up, soko-run-up soko-go-or-push-down, soko-run-or-push-down, soko-run-down soko-go-or-push-left, soko-run-or-push-left, soko-run-left soko-go-or-push-right, soko-run-or-push-right, soko-run-right are not undeclared, so they can be bound to your cursor keys. This library uses only the vi based bindings (hjkl). You have to define a function `SOKOBAN-RESET-KBD', which resets the keytables to your default table. @reference-end @use(U-C-38) @use(ref-viewer-1-0-USED) @fi @fi @fi @if-using ( complete sokoban-call-ref ) @if-using(REF-TREE) @reference-begin-class 37 < B > Functions and macros @reference-end @reference-begin-class 39 Functions and macros ---------------------- @reference-end @use(U-C-37) @use(U-C-39) @fi @if-using ( complete sokoban-call-ref ) @if-using(REF-TREE) @reference-begin-class 39 < A > sokoban @reference-end @reference-begin-class 40 sokoban --------- You can play the well known game. You have to push the pakets to the bases. Bases are marked with `.'. Pakets are marked with `$', or `S' on bases. Running or pushing through walls (`#') is not possible. +--------------------+-----+--------------------------------------+ | Function | Key | Comment | +--------------------+-----+--------------------------------------+ | go-or-push-up | k | | | run-or-push-up | K | repeat and stop at wall | | run-up | C-K | repeat and stop at wall or paket | | go-or-push-down | j | | | run-or-push-down | J | repeat and stop at wall | | run-down | C-J | repeat and stop at wall or paket | | go-or-push-left | h | | | run-or-push-left | H | repeat and stop at wall | | run-left | C-H | repeat and stop at wall or paket | | go-or-push-right | l | | | run-or-push-right | L | repeat and stop at wall | | run-right | C-L | repeat and stop at wall or paket | | undo-last-move | u | if repeated, only the last one | | | | | | next-level | + | level has not to be solved | | previous-level | - | | | save | s | not over different editing sessions | | reset | r | to last save or start, if no save | | restart-level | R | to start | | | | | | quit | q | | | describe-bindings | ? | | +--------------------+-----+--------------------------------------+ Starting a level calls save automatically! @reference-end @use(U-C-39) @use(U-C-40) @use(ref-viewer-1-0-USED) @use(ref-viewer-1-1-USED) @fi @fi @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 37 < C > Hooks @reference-end @reference-begin-class 41 Hooks ------- @reference-end @use(U-C-37) @use(U-C-41) @fi @if-using ( complete ) @if-using(REF-TREE) @reference-begin-class 41 The libary defines a macro `abort-hook-add' and a OCL tag ABORT-HOOK-ADD. This macro should be added to your abort-macro! If needed, an existing macro `abort-hook-add' will be integrated! The libary functions are marked as demand-loading. If you do not wnt to use the default file `~/.orisokoban', define the tag and function SOKOBAN-FILE. @reference-end @use(U-C-41) @use(ref-viewer-1-0-USED) @use(ref-viewer-1-3-USED) @fi @fi @fi @if-using(REF-TREE) @reference-begin-class 42 CommonUsedReferences ---------------------- @reference-end @use(U-C-42) @fi @if-using ( regexp-reference ) @if-using(REF-TREE) @reference-begin-class 42 < A > Origami Regular Expressions @reference-end @reference-begin-class 43 Origami Regular Expressions ----------------------------- Origami supports regular expression search and replace. The syntax widely conforms POSIX extended or basic regular expressions. < A > Character Match @reference-end @reference-begin-class 44 Character Match ----------------- +------------+------------+--------------------------------------------+ | Basic | Extended | Matches | +------------+------------+--------------------------------------------+ | <char> | <char> | <char>, if not a special character | | \<char> | \<char> | <char>, if a special character | | . | . | any character | | ^ | ^ | start of line, if at begin of exp. | | $ | $ | end of line, if at end of exp. | | [<class>] | [<class>] | any char in <class> | | [^<class>] | [^<class>] | any char not in <class> | | | | <class> is a list of | | | | 1) <char> | | | | 2) <char>-<char> | | | | 3) [:<set>:] (*) | +------------+------------+--------------------------------------------+ (*) <set> can be `alpha', `upper', `lower', `digit', `xdigit', `alnum', `blank', `space', `print', `cntrl', `graph' or `punct'. See your local ctype documentation for detailed information. @reference-end @reference-begin-class 43 < B > Complex Expressions @reference-end @reference-begin-class 45 Complex Expressions --------------------- +------------+------------+--------------------------------------------+ | Basic | Extended | Matches(*) | +------------+------------+--------------------------------------------+ | <e1> <e2> | <e1> <e2> | concatenation of strings <s1> <s2> | | \(<e>\) | (<e>) | <s>, used for grouping and \x in replaceme | | <e1>\|<e2> | <e1>|<e2> | <s1> or <s2> | | <e>\+ | <e>+ | one or more strings, matching <e> | | <e>\? | <e>? | zero on one string, matching <e> | | <e>* | <e>* | zero or more strings, matching <e> | | <e>\{<n>\} | <e>{<n>} | <n> strings, matching <e> | | <e>\{<n>,< | <e>{<n>,<m | <n> to <m> strings, matching <e> | | \!<e> | !<e> | if at begin of line: | | | | next line, not matching <e> | +------------+------------+--------------------------------------------+ (*) <e>,<e1> and <e2> are regular expressions and strings <s>,<s1> and <s2> are strings, matching the corresponding expressions. <n> and <m> are integers. @reference-end @reference-begin-class 43 < C > Replace Expressions @reference-end @reference-begin-class 46 Replace Expressions --------------------- In regular expression replace, the following special expressions are allowed (any character, not used for special purpose, can be used for itself): +------------+------------------------------------------------------+ | Expression | Meaning(*) | +------------+------------------------------------------------------+ | \<x> | the <x>-th group in the search pattern | | \u<x> | the <x>-th group, all characters uppercase | | \l<x> | the <x>-th group, all characters lowercase | | \{<x><e>} | <s> length limited by length of <x>-th group (**) | | \?<x><e>} | <s>, if the <x>-th group matches | | \!<x><e>} | <s>, if the <x>-th group does not match | | \} | } | | \\ | \ | +------------+------------------------------------------------------+ (*) <x> can be 0 .. 9 and g10 .. g16. The <x>-th group is the part of the matching string, matched by the part of the regular expressions in the <x>-th pair of (). 0 is used for the complete string. <e> is a replace expression and <s> the corresponding string. (**) For short strings <s>, the last character will be used for padding. Use `\0' as last character to prevent padding. @reference-end @use(U-C-42) @use(U-C-43) @use(U-C-44) @use(ref-viewer-1-0-USED) @use(U-C-45) @use(U-C-46) @use(ref-viewer-1-3-USED) @fi @fi @if-using ( cmd-reference ) @if-using(REF-TREE) @reference-begin-class 42 < B > Origami Command Line Options @reference-end @reference-begin-class 47 Origami Command Line Options ------------------------------ +--------------+------------------------------------------------------+ | Option | Function | +--------------+------------------------------------------------------+ | -a delay | specify time between auto-saves | | | (1<=delay<=60,default=8) | | -A | open the list of files, instead of first file | | -C | disable copyright message | | -D | dump on crash | | -d dspmode | specify display mode (*) | | -e | echoing keyboard input on | | -h | show available command line arguments | | -i | show ctrl-chars inverse | | -k name | specify other rc-file | | -K state | choose keypad mode | | | N -> numerical | | | A -> application | | -l number | first line in file | | -m name | marks for fold-display | | -M marks | like -m, but give strings directly | | -n | load files without fold-parsing | | -N lines | specify size of virtual line handling buffer | | -o | start in overwrite-mode | | -O value | pass data to OCL | | -p | use c-preprocessor-mode | | -P | do not open control terminal, if stdin isn't | | -R rcpath | pathlist for rc,help and msg-file | | -S cmd | use cmd as shell | | | pipe-commands are disabled | | -t width | specify the size of tabs | | -T name | specify window name, after exiting Origami | | -v | start in view-mode | | -V | verbose-mode | | -W name | display name in statusline | | -X string | specify OS-dependent stuff | | -Z | disable suspend-origami | +--------------+------------------------------------------------------+ * dspmode is a sequence of: +-------+--------------------------------------------------+ | Code | Meaning | +-------+--------------------------------------------------+ | o | octal display (C-?k: \177) | | d | decimal display (C-?: \d127) | | h | hexadecimal display (C-?: \7F) | | m | mark control characters | | i | inverse control characters | | n | numbered control characters | | p | normal characters display | | 8 | numbered display of 8-bit characters | | a | numbered character display | | t tab | specify tab width (tab<=0: tab like control) | +-------+--------------------------------------------------+ @reference-end @use(U-C-42) @use(U-C-47) @use(ref-viewer-1-0-USED) @use(ref-viewer-1-2-USED) @fi @fi @if-using(REF-TREE) @reference-begin-class 48 EMacs - Reference Card (Michael Haardt) ----------------------------------------- This is the reference file for EMacs, a binding for the folding-editor Origami. < A > EMacs Command Line Options @reference-end @reference-begin-class 49 EMacs Command Line Options ---------------------------- You can use the following commad line options, to control the modes of EMacs: +------------+------------+------------------------------------------+ | Off | On | Mode | +------------+------------+------------------------------------------+ | -Onotime | -Otime | time display in the statusline | | -Onoposi | -Oposi | position display in the statusline | | -Onofull | -Ofull | full shifting display | | -Onoai | -Oai | autoindent | | -Onomagic | -Omagic | regular exprsession search | | -Onomagic | -Oxmagic | extended regular expression search | | -Onoc | -Oc | c-mode | +------------+------------+------------------------------------------+ You can also use the option '-Odefault' to use the default values: -Otime -Onoposi -Onofull -Oai -Onomagic -Onoc @reference-end @reference-begin-class 48 < B > Origami Command Line Options < C > Origami Regular Expressions < D > Messages, errors and prompts @reference-end @reference-begin-class 50 Messages, errors and prompts ------------------------------ Sometimes EMacs may want to tell you something, like when you did something which EMacs does not allow. If it is something simple, such as typing a control key sequence which is not associated with any command, EMacs will just ignore it. Otherwise, it will also display an informative error message at the bottom of the screen. Simple messages are displayed in brackets, prompts will appear without brackets and end with a question mark. When starting using verbose mode, EMacs will be less ignorant and tell you more. Look under command line switches and/or modes on how to use modes. @reference-end @reference-begin-class 48 < E > The status line and the message line @reference-end @reference-begin-class 51 The status line and the message line -------------------------------------- The line immediately above the bottom line is referred to as the "mode line". The mode line looks something like * EMacs 1.6.79 (None) teach-emacs This is a very useful "information" line. asterisk (star) indicates that changes have been made to the file. Immediately after opening or saving a file, there is no star. name ("EMacs" in this case) shows the name of your compiled keybinding, which runs on top of the Origami interpreter. words inside the parentheses indicate the "modes" EMacs is currently in. filename ("teach-emacs" in this case) is the name of the file you are currently editing. If you use more than one window, each window will have its own mode line. @reference-end @reference-begin-class 48 < F > Used notation of input @reference-end @reference-begin-class 52 Used notation of input ------------------------ In the following sections, the notation below is used to describe which commands are bound to which keys or sequences of keys. C-<chr> Hold the CONTROL key while pressing the character <chr>. Thus, C-F would be: hold the CONTROL key and press F. Some people may be used to see ^F, here it is C-F. M-<chr> If you have no Meta key, then press the ESCAPE key and release it, then press the character <chr>. Alternatively, if your keyboard has a meta key, then hold it down while typing <chr>. M-C-<chr> If you have no Meta key, then press the ESCAPE key and release it, then hold the CONTROL key while pressing the character <chr>. Otherwise, hold down Meta and Control while typing <chr>. @reference-end @reference-begin-class 48 < G > Bound keys and key sequences @reference-end @reference-begin-class 53 Bound keys and key sequences ------------------------------ Each key inserts/overwrites its character at the current cursor position, unless it is bound to a command, in which case the command will be started. If the key is start of a key sequence to which a command is bound, EMacs will wait for the rest of that sequence and show what was typed so far in the message line. Killing text means that the text will be erased from the buffer and appended to the kill buffer whereas deleting text means just erasing it, although a limited undo function is available. < A > The general abort command @reference-end @reference-begin-class 54 The general abort command --------------------------- C-G The EMacs command used to abort any command, no matter if it requests input or not, is C-G. For example, you can used C-G to discard a numeric argument, at the beginning of a command that you don't want to finish, to abort loading big files and to abort running macros. @reference-end @reference-begin-class 53 < B > Cursor motion @reference-end @reference-begin-class 55 Cursor motion --------------- < A > Basic cursor control (up, down, left, right) @reference-end @reference-begin-class 56 Basic cursor control (up, down, left, right) ---------------------------------------------- Not the best, but the most basic way to move the cursor is to use the commands previous-line, backward-character, forward-character and next-line. Here, in a more graphical form, are the commands: Previous line, C-P : Backward, C-B .. Current cursor position .. Forward, C-F : Next line, C-N You'll probably find it easy to think of these by letter: P for previous, N for next, B for backward and F for forward. When you go off the top or bottom of the screen, the text beyond the edge is shifted onto the screen so that your instructions can be carried out while keeping the cursor on the screen. If your terminal is supported, then the cursor keys will work as well. @reference-end @reference-begin-class 55 < B > Move cursor backward/forward one word @reference-end @reference-begin-class 57 Move cursor backward/forward one word --------------------------------------- M-b backward-word, moves the cursor back one word. M-f backward-word, moves the cursor forward one word. @reference-end @reference-begin-class 55 < C > Move cursor backward/forward one sentence @reference-end @reference-begin-class 58 Move cursor backward/forward one sentence ------------------------------------------- The end of a sentence in EMacs means a line with a period at its end or a period followed by two spaces. M-B backward-sentence. Moves the cursor to the beginning of the last sentence. M-F forward-sentence. Moves the cursor to the beginning of the next sentence. @reference-end @reference-begin-class 55 < D > Move cursor to the previous/next paragraph @reference-end @reference-begin-class 59 Move cursor to the previous/next paragraph -------------------------------------------- A paragraph in EMacs is text without blank lines and without a period in the first column. M-p previous-paragraph, moves the cursor to the previous paragraph. M-n next-paragraph, moves the cursor to the next paragraph. @reference-end @reference-begin-class 55 < E > Move cursor to the previous/next page @reference-end @reference-begin-class 60 Move cursor to the previous/next page --------------------------------------- M-v previous-page, move one page back. If your terminal is supported, then the NextPage key will also work. C-V next-page, move one page forward. If your terminal is supported, then the PreviousPage key will also work. @reference-end @reference-begin-class 55 < F > Move cursor to the beginning/end of a line @reference-end @reference-begin-class 61 Move cursor to the beginning/end of a line -------------------------------------------- C-A beginning-of-line, move to the beginning of line. If your terminal is supported, the begin key will also work. C-E end-of-line, move to the end of line. If your terminal is supported, the end key will also work. @reference-end @reference-begin-class 55 < G > Move cursor to the beginning/end of a fold @reference-end @reference-begin-class 62 Move cursor to the beginning/end of a fold -------------------------------------------- M-< beginning-of-fold, move to the beginning of the entered fold. If your terminal is supported, the home key will also work. M-> end-of-fold, move to the end of the entered fold. @reference-end @reference-begin-class 55 < H > Move cursor to line with a specific number @reference-end @reference-begin-class 63 Move cursor to line with a specific number -------------------------------------------- M-g go-to-line, moves the cursor to the specified line in an entered fold. With a numeric argument, Origami jumps to that line, otherwise a prompt asking for it will be issued. @reference-end @reference-begin-class 55 < I > Move cursor to matching paren, bracket or brace @reference-end @reference-begin-class 64 Move cursor to matching paren, bracket or brace ------------------------------------------------- M-# goto-matching-fence, move cursor to matching paren, bracket or brace. If the cursor stands not on one of the above mentioned fences, EMacs tries to find one of the following more complex structures (Skip1 -> Skip2 [ -> Skip3 ] -> Skip1 .. ): +----------+------------+------------+------------+ | Language | Skip1 | Skip2 | Skip3 | +----------+------------+------------+------------+ | all | #ifdef | #else | #endif | | all | #if | #else | #endif | | OCL | @if-using | @fi | | +----------+------------+------------+------------+ @reference-end @reference-begin-class 55 < J > Move cursor in and out of folds @reference-end @reference-begin-class 65 Move cursor in and out of folds --------------------------------- C-O open-fold, opens the fold under the cursor. If your terminal is supported, then the open key will work as well. C-C close-fold, closes the current fold and folds inside it. If your terminal is supported, then the close key will work as well. M-C-O enter-fold, enters the fold under the cursor. If the line is not a fold, Origami tries to follow the given include statement or prompts for a filename. The environement variable `ORIGAMILIBPATH' may contain a `:' separated list of directories (default is `/usr/include'). M-C-C exit-fold, exits the current fold. @reference-end @reference-begin-class 53 < C > Editing @reference-end @reference-begin-class 66 Editing --------- < A > Creating a new line @reference-end @reference-begin-class 67 Creating a new line --------------------- C-M newline-and-indent, splits the line at the cursor position. If mode C-J Autoindent is active, then the new line is indented as the previous line. @reference-end @reference-begin-class 66 < B > Deleting characters @reference-end @reference-begin-class 68 Deleting characters --------------------- C-H delete-previous-character, deletes the character left to the cursor. Most backspace keys also send C-H. C-D delete-character, deletes the character under the cursor. Most C-? delete keys also send a C-?. @reference-end @reference-begin-class 66 < C > Exchanging characters @reference-end @reference-begin-class 69 Exchanging characters ----------------------- C-T transpose-characters, exchanges the character under the cursor with the character left from the cursor, then moves the cursor forward one character. @reference-end @reference-begin-class 66 < D > Deleting words @reference-end @reference-begin-class 70 Deleting words ---------------- M-C-H delete-word-backward, deletes word backwards from cursor position. M-C-D delete-word, deletes word under cursor position. @reference-end @reference-begin-class 66 < E > Changing capitalization of words @reference-end @reference-begin-class 71 Changing capitalization of words ---------------------------------- M-c case-word-capitalize, capitalizes the word starting at cursor position and moves the cursor forward one word. M-u case-word-upper, changes the word to upper case starting at cursor position and moves the cursor forward one word. M-l case-word-lower, changes the word to lower case starting at cursor position and moves the cursor forward one word. @reference-end @reference-begin-class 66 < F > Killing, deleting, and getting erased text back @reference-end @reference-begin-class 72 Killing, deleting, and getting erased text back ------------------------------------------------- C-K kill-line, kills all text from cursor position to end of line. If the cursor was already at the end of the line, the newline character ending the line will be killed, joining the current line with the next line. M-C-K | delline delete-line, deleted all text from cursor position to end of line. If the cursor was already at the end of the line, the newline character ending the line will be deleted, joining the current line with the next line. C-Y insert-folded-kill-buffer, moves the kill buffer in a fold and yanks this fold back C-X C-Y undo-delete-line, yank the last deleted line back @reference-end @reference-begin-class 66 < G > copy-to-kill-buffer @reference-end @reference-begin-class 73 copy-to-kill-buffer --------------------- M-k copy-to-kill-buffer, appends the line to the kill buffer without killing it @reference-end @reference-begin-class 66 < H > unfold-fold @reference-end @reference-begin-class 74 unfold-fold ------------- C-U unfold-fold, removes the fold marks of the fold under the cursor @reference-end @reference-begin-class 66 < I > auto-header @reference-end @reference-begin-class 75 auto-header ------------- C-X C-H auto-header, copies the first in of the fold under the cursor to the fold header @reference-end @reference-begin-class 66 < J > toggle-file-fold @reference-end @reference-begin-class 76 toggle-file-fold ------------------ C-X C-F toggle-file-fold, toggles between a fold and a file-fold @reference-end @reference-begin-class 66 < M > toggle-attach-file-to-fold @reference-end @reference-begin-class 77 toggle-attach-file-to-fold ---------------------------- C-X C-A toggle-attach-file-to-fold, attaches a file to a fold to create a file-fold for an already existing file, or unlinks the file from the fold @reference-end @reference-begin-class 53 < D > Regions @reference-end @reference-begin-class 78 Regions --------- Regions in EMacs are parts of the buffer, one end marked by an invisible mark, the other by the cursor. The region includes the beginning position and excludes the ending position. Regions have to respect the fold structure. C-@ set-mark, set an invisible mark at the current cursor position. This function is also bound to control-space, because most keyboards generate the same character on C-@ and control-space. C-X C-X change-mark-and-position, set the invisible mark at the cursor position and move the cursor to the previos location of the mark. C-X x highlight-region, show the marked region highlighted. A set argument will enhance the display time. M-C-W delete-region, delete a region. This can be undone by undo-delete-line. C-W kill-region, move the region to the kill buffer. M-w copy-region, copy the region in the kill buffer. M-C-@ fold-region, folds the region. @reference-end @reference-begin-class 53 < E > Search/replace @reference-end @reference-begin-class 79 Search/replace ---------------- < A > Search for a string @reference-end @reference-begin-class 80 Search for a string --------------------- M-C-S search-forward, prompts for a string and moves the cursor to the next occurence of it. M-C-R search-reverse, prompts for a string and moves the cursor to the last occurence of it. @reference-end @reference-begin-class 79 < B > Incremental search for a string @reference-end @reference-begin-class 81 Incremental search for a string --------------------------------- Incremental search allows you to see the result of the search while the search string is typed/changed. C-S incremental-search-forward, switches to incremental search mode with default direction forward. C-R incremental-search-reverse, switches to incremental search mode with default direction backward. < A > Functions in incremental search mode @reference-end @reference-begin-class 82 Functions in incremental search mode -------------------------------------- During incremental search, you can use the following commands: <chr> Append the character to the search pattern and search in current search direction. C-S Move the cursor to the next occurence of the search string and switch to search direction forward. C-R Move to the previous occurence and switch to searching backward. C-P Go back in search history. C-N Go forward in search history. C-M | C-J exit incremental search, leave the cursor where it is. C-H remove last letter from search pattern. C-G aborts incremental search, sets the cursor to where it was before. @reference-end @reference-begin-class 79 < C > Search and replace @reference-end @reference-begin-class 83 Search and replace -------------------- M-R replace-string, asks for a search string and a replace string and replaces all occurences of the search string by the replace string. M-R query-replace-string, asks for a search string and a replace string and gives the choice to replace the search string by the replace string at all occurences. During query-replace-string the following commands are available: Y replace and go to next occurence N don't replace and go to next occurence ! replace all further occurences A abort . replace this occurence and abort after @reference-end @reference-begin-class 53 < F > Files @reference-end @reference-begin-class 84 Files ------- C-X C-I insert-file, inserts the contents of a file at the current position into the buffer. C-X C-S save-file, writes the buffer back to the edited file. If your terminal is supported, the save key will also work. C-X C-W write-file, writes the buffer to another file. C-X C-R read-file, reads another file into the buffer. A set argument will read the file without parsing. The state of the mode parsing will not be changed. C-X C-N next-file, reads next file from command line argument list into the buffer. C-X C-P previous-file, reads previous file from command line argument list into the buffer. M-~ set-file-unchanged, marks the buffer as unchanged. @reference-end @reference-begin-class 53 < G > Buffers @reference-end @reference-begin-class 85 Buffers --------- Origami has a different buffer concept than most other emacs implementations. Each buffer has its own (and only) window to edit it. Buffers may not be currently visible, so list-buffers is an important function if you get lost. C-X C-B list-buffers, show a list of all used buffers and offers a menu for selecting another buffer (return moves you back to the old position). If your terminal supports it, the select key will also work. C-X b change-buffername, changes the name of the current buffer < A > Opening and closing buffers @reference-end @reference-begin-class 86 Opening and closing buffers ----------------------------- C-X "2 open-buffer, open a second buffer by parting the current window horizontally. A set argument will read the file without parsing. The state of the mode parsing will not be changed. C-X "3 open-adjacent-buffer, open a second buffer by parting the current window vertically. A set argument will read the file without parsing. The state of the mode parsing will not be changed. C-X "0 exit-buffer, close the current buffer and unify the window with the window of the previous buffer C-X @ show a special buffer containing the last messages. @reference-end @reference-begin-class 85 < B > Changing between buffers @reference-end @reference-begin-class 87 Changing between buffers -------------------------- M-C-X p previous-buffer, go to the previous buffer. M-C-X n next-buffer, go to the next buffer. C-X o other-buffer, go cyclic to the next buffer. M-C-X C-P up-buffer, move up one buffer M-C-X C-N down-buffer, move down one buffer M-C-X C-B left-buffer, move left one buffer M-C-X C-F right-buffer, move right one buffer @reference-end @reference-begin-class 85 < C > Resizing buffers @reference-end @reference-begin-class 88 Resizing buffers ------------------ C-X "1 full-size-buffer, extend the size of the current buffer to screen size M-C-X ^ grow-buffer, grow current buffer vertically M-C-X v shrink-buffer, shrink current buffer vertically M-C-X < widen-buffer, grow current buffer horizontally M-C-X > narrow-buffer, shrink current buffer horizontally @reference-end @reference-begin-class 53 < H > Modes @reference-end @reference-begin-class 89 Modes ------- Unlike most other Emacs implementations, Origami does not seperate between major and minor modes. The mode default values can be set using command line switches: < A > Origami Command Line Options @reference-end @reference-begin-class 90 Origami Command Line Options ------------------------------ @reference-end @reference-begin-class 89 < B > EMacs Command Line Options All modes are related to a buffer, they are set with C-X "m <mode-key> and deleted with C-X C-M <mode-key>. The following mode-keys are available: "a autosave, asks for a time interval and saves the text each time after this interval expires "c c-mode, syntax support for C "d show a menu for changing the used character display mode. This mode also can only be changed, not deleted. "f full-shift, moving over the right border of the screen will shift the whole buffer, not only the current line. "i autoindent, new lines will be indented as their predecessor "l set-language, sets a new language for fold comments. This mode can only be changed and not deleted. "m basic-regular-expression, search/replace will use regular expressions "M extended-regular-expression, search/replace will use extended expressions. "n no-parse, reading files will be done without fold parsing "o overwrite, new text overwrites existing text instead of being inserted "p position, always show current position in status line "t time, display the time right from the filename "v view, text can only be viewd but not changed "V If set, EMacs will be more verbose in some situations. "w wrap, wraps a word to the next line if neccessary "# hash-shifting @reference-end @reference-begin-class 53 < I > Arguments @reference-end @reference-begin-class 91 Arguments ----------- M-<number> set-argument-<number> (number can be a digit from 0 to 9), set number as argument for the next executed command. Any following typed digits will be part of the number. Most commands simply are executed number times, when prefixed by an argument. @reference-end @reference-begin-class 53 < J > Shell Commands @reference-end @reference-begin-class 92 Shell Commands ---------------- < A > shell @reference-end @reference-begin-class 93 shell ------- shift-command | C-X "c shell, starts a sub shell @reference-end @reference-begin-class 92 < B > shell-command @reference-end @reference-begin-class 94 shell-command --------------- command | C-X "! shell-command, starts a sub shell with a given command @reference-end @reference-begin-class 92 < C > filter-buffer @reference-end @reference-begin-class 95 filter-buffer --------------- C-X "| filter-buffer, first saves current file and then filters it through the specified filter command. @reference-end @reference-begin-class 92 < D > pipe-to-command @reference-end @reference-begin-class 96 pipe-to-command ----------------- C-X "> pipe-to-command, feeds the command with the current file as standard input. @reference-end @reference-begin-class 92 < E > pipe-from-command @reference-end @reference-begin-class 97 pipe-from-command ------------------- C-X "< pipe-from-command, inserts standard output from command at the current position. @reference-end @reference-begin-class 92 < F > make-it @reference-end @reference-begin-class 98 make-it --------- M-x m make-it, invoke make @reference-end @reference-begin-class 92 < G > compile-it @reference-end @reference-begin-class 99 compile-it ------------ M-x c compile-it, invoke C compiler @reference-end @reference-begin-class 92 < H > beautify-c-code @reference-end @reference-begin-class 100 beautify-c-code ----------------- C-X "i beautify-c-code, filter buffer through beautifier @reference-end @reference-begin-class 92 < I > check-out @reference-end @reference-begin-class 101 check-out ----------- M-x o check-out, checks current file out but does *not* reload the buffer. @reference-end @reference-begin-class 92 < J > check-in @reference-end @reference-begin-class 102 check-in ---------- M-x i check-in, saves buffer and checks file in @reference-end @reference-begin-class 92 < M > spell-it @reference-end @reference-begin-class 103 spell-it ---------- M-x s spell-it, runs current file through spell and starts an interactive search and replace for all misspelled words. @reference-end @reference-begin-class 53 < M > More advanced functions @reference-end @reference-begin-class 104 More advanced functions ------------------------- < A > C-Mode @reference-end @reference-begin-class 105 C-Mode -------- The following characters have a special meaning in C-mode: ( [ { ' " ; Just play around to get used to them, once you are they save lots of typing. In C-mode words consist of letters, digits and underscores. @reference-end @reference-begin-class 104 < B > Tags @reference-end @reference-begin-class 106 Tags ------ < A > enter-and-go-tags-buffer @reference-end @reference-begin-class 107 enter-and-go-tags-buffer -------------------------- M-. enter-and-go-tags-buffer, prompt for tag and go to tagged position (open buffer, if needed) filename-or-tag-completion can also be used. In this case, the first tag starting with the given text is used. < A > Tags file @reference-end @reference-begin-class 106 < B > find-and-go-tags-buffer @reference-end @reference-begin-class 108 find-and-go-tags-buffer ------------------------- M-, find-and-go-tags-buffer, like enter-and-go-tags-buffer, but use the word under the cursor < A > Tags file @reference-end @reference-begin-class 106 < C > set-user-tags-file @reference-end @reference-begin-class 109 set-user-tags-file -------------------- C-X t set-user-tags-file, define a new tags file (empty input uses default tags files). < A > Tags file @reference-end @reference-begin-class 104 < C > Macros @reference-end @reference-begin-class 110 Macros -------- < A > start-define-macro @reference-end @reference-begin-class 111 start-define-macro -------------------- C-X "( define-macro, starts recording a keyboard macro @reference-end @reference-begin-class 110 < B > end-define-macro @reference-end @reference-begin-class 112 end-define-macro ------------------ C-X ") define-macro, ends recording a keyboard macro @reference-end @reference-begin-class 110 < C > execute-macro @reference-end @reference-begin-class 113 execute-macro --------------- C-X "e execute-macro, executes a recorded keyboard macro @reference-end @reference-begin-class 104 < D > center-and-redraw-display @reference-end @reference-begin-class 114 center-and-redraw-display --------------------------- C-L center-and-redraw-display, redraws screen bringing the current line to the middle of the screen. @reference-end @reference-begin-class 104 < E > redraw-display @reference-end @reference-begin-class 115 redraw-display ---------------- refresh | M-C-L redraw, redraws screen e.g. after write(1)s from other people etc. @reference-end @reference-begin-class 104 < F > describe-bindings @reference-end @reference-begin-class 116 describe-bindings ------------------- shift-help | C-X "? describe-bindings, shows all commands and where they are bound to @reference-end @reference-begin-class 104 < G > describe-fold @reference-end @reference-begin-class 117 describe-fold --------------- C-X "= describe-fold, gives you some information about your position in the text @reference-end @reference-begin-class 104 < H > quote-character @reference-end @reference-begin-class 118 quote-character ----------------- C-Q quote-character, simply insert the next character and do not parse it as a command @reference-end @reference-begin-class 104 < I > filename-or-tag-completion @reference-end @reference-begin-class 119 filename-or-tag-completion ---------------------------- M-C-I filename-or-tag-completion, complete a word to a filename. This function works everywhere, not only in prompts! If filename-or-tag-completion is used outside of prompts and if there is no filename to complete, Emacs tries to complete the started word as tag. < A > Tags file @reference-end @reference-begin-class 104 < J > fill-paragraph @reference-end @reference-begin-class 120 fill-paragraph ---------------- M-q fill-paragraph, fills paragraph from cursor to end of paragraph @reference-end @reference-begin-class 104 < M > set-fill-column @reference-end @reference-begin-class 121 set-fill-column ----------------- C-X "f set-fill-column, sets fill column to argument, or cursor position if none is given, or asks for it if cursor if at the left margin. @reference-end @reference-begin-class 53 < O > How to get out @reference-end @reference-begin-class 122 How to get out ---------------- < A > exit-origami @reference-end @reference-begin-class 123 exit-origami -------------- exit | C-X C-C exit-origami @reference-end @reference-begin-class 122 < B > save-and-exit-origami @reference-end @reference-begin-class 124 save-and-exit-origami ----------------------- shift-exit | M-Z save-and-exit-origami @reference-end @reference-begin-class 122 < C > suspend-origami @reference-end @reference-begin-class 125 suspend-origami ----------------- suspend | C-Z suspend-origami @reference-end @reference-begin-class 53 < R > Funny Functions @reference-end @reference-begin-class 126 Funny Functions ----------------- < A > sokoban @reference-end @reference-begin-class 127 sokoban --------- M-X k < A > sokoban @reference-end @reference-begin-class 128 sokoban --------- @reference-end @reference-begin-class 126 < B > towers-of-hanoi @reference-end @reference-begin-class 129 towers-of-hanoi ----------------- M-X t Play the well known game towers-of-hanoi at the bottom of the current buffer. set-argument can be used, to control the height. @reference-end (demand-load( (forward ref-abort-unload)(forward ref-case-fun) (defvar(ref-class ref-call ref-n ref-call-i-next ref-call-i-quit ref-call-i-back ref-call-i-kill )) @if-using(tags-mac-reference-file-TREE)(deffun tags-mac-reference-file(set ref-call 1 ref-case-fun ref-abort-unload redraw-display))@fi @if-using(sokoban-reference-file-TREE)(deffun sokoban-reference-file(set ref-call 37 ref-case-fun ref-abort-unload redraw-display))@fi @if-using(CommonUsedReferences-TREE)(deffun CommonUsedReferences(set ref-call 42 ref-case-fun ref-abort-unload redraw-display))@fi @if-using(EMacs-Reference-Card-TREE)(deffun EMacs-Reference-Card(set ref-call 48 ref-case-fun ref-abort-unload redraw-display))@fi (defvar( c-1 c-2 c-3 c-4 c-5 c-6 c-7 c-8 c-9 c-10 c-11 c-12 c-13 c-14 c-15 c-16 c-17 c-18 c-19 c-20 c-21 )) @use(U-C-48) @use(U-C-49) @use(ref-viewer-1-0-USED) @use(U-C-50) @use(U-C-51) @use(U-C-52) @use(U-C-53) @use(U-C-54) @use(U-C-55) @use(U-C-56) @use(U-C-57) @use(U-C-58) @use(U-C-59) @use(U-C-60) @use(U-C-61) @use(U-C-62) @use(U-C-63) @use(U-C-64) @use(U-C-65) @use(ref-viewer-1-10-USED) @use(U-C-66) @use(U-C-67) @use(U-C-68) @use(U-C-69) @use(U-C-70) @use(U-C-71) @use(U-C-72) @use(U-C-73) @use(U-C-74) @use(U-C-75) @use(U-C-76) @use(U-C-77) @use(ref-viewer-1-11-USED) @use(U-C-78) @use(U-C-79) @use(U-C-80) @use(U-C-81) @use(U-C-82) @use(ref-viewer-1-1-USED) @use(U-C-83) @use(ref-viewer-1-3-USED) @use(U-C-84) @use(U-C-85) @use(U-C-86) @use(U-C-87) @use(U-C-88) @use(U-C-89) @use(U-C-90) @use(ref-viewer-1-2-USED) @use(U-C-91) @use(U-C-92) @use(U-C-93) @use(U-C-94) @use(U-C-95) @use(U-C-96) @use(U-C-97) @use(U-C-98) @use(U-C-99) @use(U-C-100) @use(U-C-101) @use(U-C-102) @use(U-C-103) @use(U-C-104) @use(U-C-105) @use(U-C-106) @use(U-C-107) @use(U-C-108) @use(U-C-109) @use(U-C-110) @use(U-C-111) @use(U-C-112) @use(U-C-113) @use(U-C-114) @use(U-C-115) @use(U-C-116) @use(U-C-117) @use(U-C-118) @use(U-C-119) @use(U-C-120) @use(U-C-121) @use(U-C-122) @use(U-C-123) @use(U-C-124) @use(U-C-125) @use(U-C-126) @use(U-C-127) @use(U-C-128) @use(U-C-129) @use(ref-viewer-1-13-USED) @use(ref-viewer-1-7-USED) @use not( file-reference sokoban-call-ref regexp-reference cmd-reference) @if-using( ref-viewer-1-21-USED ref-viewer-1-20-USED ref-viewer-1-19-USED ref-viewer-1-18-USED ref-viewer-1-17-USED ref-viewer-1-16-USED ref-viewer-1-15-USED ref-viewer-1-14-USED ref-viewer-1-13-USED ref-viewer-1-12-USED ref-viewer-1-11-USED ref-viewer-1-10-USED ref-viewer-1-9-USED ref-viewer-1-8-USED ref-viewer-1-7-USED ref-viewer-1-6-USED ref-viewer-1-5-USED ref-viewer-1-4-USED ref-viewer-1-3-USED ref-viewer-1-2-USED ref-viewer-1-1-USED ref-viewer-1-0-USED ) (demand-load not((defmac ref-viewer-1( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l next-line "invalid " "input! next-line " "A " "B " "C " "D " "E next-line " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T ))(undeclare(ref-viewer-1)))) (deffun ref-viewer-1( if not(ref-call-i-quit)( history-edit misc () insert-ascii I_QUIT beginning-of-line set-counter ref-call-i-quit store-character insert-ascii I_NEXT_PAGE beginning-of-line set-counter ref-call-i-next store-character insert-ascii I_BACK forward-character set-counter ref-call-i-back store-character insert-ascii I_KILL forward-character set-counter ref-call-i-kill store-character newline-and-indent )fi do( local(modify-behaviour )( set modify-behaviour ref-class help) if not(in-prompt)( message("invalid " "input! ) show-cursor 15 set ref-call 0 return-from-macro )else( do( begin-prompt-macro set ref-call 1 local(ref-n)( case ( =(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l ))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T " "U))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T " "U " "V))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T " "U " "V " "W))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T " "U " "V " "W " "X))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T " "U " "V " "W " "X " "Y))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "L "a "s "t " "# "( "N "e "x "t ") " "P "r "e "v " "K "i "l "l " "A " "B " "C " "D " "E " "F " "G " "H " "I " "J " "M " "O " "R " "S " "T " "U " "V " "W " "X " "Y " "Z))) esac ) end-prompt-macro case ( =(ref-call 0)(screen-off insert-ascii ref-call-i-quit screen-on set ref-call 1 return-from-macro)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(screen-off insert-ascii ref-call-i-quit screen-on return-from-macro)) (pre(set ref-call -(ref-call 1))=(ref-call 0)( insert-ascii ref-call-i-next )) (pre(set ref-call -(ref-call 1))=(ref-call 0)( insert-ascii ref-call-i-back )) (pre(set ref-call -(ref-call 1))=(ref-call 0)( insert-ascii ref-call-i-kill )) default( screen-off insert-ascii ref-call-i-quit screen-on case (or(>(ref-call ref-n) =(ref-n 0) <=(ref-call 0))(message("invalid " "input! )show-cursor 15 return-from-macro)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-1-USED ref-viewer-1-2-USED ref-viewer-1-3-USED ref-viewer-1-4-USED ref-viewer-1-5-USED ref-viewer-1-6-USED ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-1 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-2-USED ref-viewer-1-3-USED ref-viewer-1-4-USED ref-viewer-1-5-USED ref-viewer-1-6-USED ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-2 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-3-USED ref-viewer-1-4-USED ref-viewer-1-5-USED ref-viewer-1-6-USED ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-3 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-4-USED ref-viewer-1-5-USED ref-viewer-1-6-USED ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-4 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-5-USED ref-viewer-1-6-USED ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-5 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-6-USED ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-6 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-7-USED ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-7 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-8-USED ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-8 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-9-USED ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-9 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-10-USED ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-10 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-11-USED ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-11 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-12-USED ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-12 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-13-USED ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-13 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-14-USED ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-14 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-15-USED ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-15 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-16-USED ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-16 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-17-USED ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-17 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-18-USED ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-18 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-19-USED ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-19 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-20-USED ref-viewer-1-21-USED )set ref-call c-20 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-1-21-USED )set ref-call c-21 @fi)) default (message("invalid " "input! )show-cursor 15 return-from-macro) esac ref-case-fun) esac )while in-prompt )fi )while =(ref-call 0) )) @fi @if-using( ref-viewer-0-16-USED ref-viewer-0-15-USED ref-viewer-0-14-USED ref-viewer-0-13-USED ref-viewer-0-12-USED ref-viewer-0-11-USED ref-viewer-0-10-USED ref-viewer-0-9-USED ref-viewer-0-8-USED ref-viewer-0-7-USED ref-viewer-0-6-USED ref-viewer-0-5-USED ref-viewer-0-4-USED ref-viewer-0-3-USED ref-viewer-0-2-USED ref-viewer-0-1-USED ref-viewer-0-0-USED ) (demand-load not((defmac ref-viewer-0( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k next-line "invalid " "input! next-line " "0 " "1 " "2 " "3 " "4 next-line " "5 " "6 " "7 " "8 " "9 " "< ))(undeclare(ref-viewer-0)))) (deffun ref-viewer-0( if not(ref-call-i-quit)( history-edit misc () insert-ascii I_QUIT beginning-of-line set-counter ref-call-i-quit store-character insert-ascii I_NEXT_PAGE beginning-of-line set-counter ref-call-i-next store-character insert-ascii I_BACK forward-character set-counter ref-call-i-back store-character insert-ascii I_KILL forward-character set-counter ref-call-i-kill store-character newline-and-indent )fi do( local(modify-behaviour )( set modify-behaviour ref-class help) if not(in-prompt)( message("invalid " "input! ) show-cursor 15 set ref-call 0 return-from-macro )else( do( begin-prompt-macro set ref-call 1 local(ref-n)( case ( =(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k ))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9 " "<))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9 " "< " ">))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9 " "< " "> " "[))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9 " "< " "> " "[ " "]))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9 " "< " "> " "[ " "] " "@))) (pre(set ref-n -(ref-n 1))=(ref-n 0)(menu-counter ref-call( " "Q "u "i "t " "R "e "t "u "r "n " "# "( "n "e "x "t "- "p "a "g "e ") " "B "a "c "k " "0 " "1 " "2 " "3 " "4 " "5 " "6 " "7 " "8 " "9 " "< " "> " "[ " "] " "@ " "$))) esac ) end-prompt-macro case ( =(ref-call 0)(screen-off insert-ascii ref-call-i-quit screen-on set ref-call 1 return-from-macro)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(screen-off insert-ascii ref-call-i-quit screen-on return-from-macro)) (pre(set ref-call -(ref-call 1))=(ref-call 0)( insert-ascii ref-call-i-next )) (pre(set ref-call -(ref-call 1))=(ref-call 0)( insert-ascii ref-call-i-back )) default( screen-off insert-ascii ref-call-i-quit screen-on case (or(>(ref-call ref-n) =(ref-n 0) <=(ref-call 0))(message("invalid " "input! )show-cursor 15 return-from-macro)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-1-USED ref-viewer-0-2-USED ref-viewer-0-3-USED ref-viewer-0-4-USED ref-viewer-0-5-USED ref-viewer-0-6-USED ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-1 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-2-USED ref-viewer-0-3-USED ref-viewer-0-4-USED ref-viewer-0-5-USED ref-viewer-0-6-USED ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-2 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-3-USED ref-viewer-0-4-USED ref-viewer-0-5-USED ref-viewer-0-6-USED ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-3 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-4-USED ref-viewer-0-5-USED ref-viewer-0-6-USED ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-4 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-5-USED ref-viewer-0-6-USED ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-5 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-6-USED ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-6 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-7-USED ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-7 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-8-USED ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-8 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-9-USED ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-9 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-10-USED ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-10 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-11-USED ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-11 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-12-USED ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-12 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-13-USED ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-13 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-14-USED ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-14 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-15-USED ref-viewer-0-16-USED )set ref-call c-15 @fi)) (pre(set ref-call -(ref-call 1))=(ref-call 0)(@if-using( ref-viewer-0-16-USED )set ref-call c-16 @fi)) default (message("invalid " "input! )show-cursor 15 return-from-macro) esac ref-case-fun) esac )while in-prompt )fi )while =(ref-call 0) )) @fi (forward ref-case-fun-0) (deffun ref-case-fun( local(ref-class ref-n)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED )set ref-n 0 @fi case (pre(set ref-call -(ref-call 3))or(0 @if-using(U-C-3)=(ref-call 0)@fi) (@if-using(U-C-3) set ref-class 3 ref-viewer-1 return-from-macro @use not(U-C-3)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-4)=(ref-call 0)@fi) (@if-using(U-C-4) set ref-class 4 ref-viewer-1 return-from-macro @use not(U-C-4)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-6)=(ref-call 0)@fi) (@if-using(U-C-6) set ref-class 6 ref-viewer-1 return-from-macro @use not(U-C-6)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-7)=(ref-call 0)@fi) (@if-using(U-C-7) set ref-class 7 ref-viewer-1 return-from-macro @use not(U-C-7)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-8)=(ref-call 0)@fi) (@if-using(U-C-8) set ref-class 8 ref-viewer-1 return-from-macro @use not(U-C-8)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-9)=(ref-call 0)@fi) (@if-using(U-C-9) set ref-class 9 ref-viewer-1 return-from-macro @use not(U-C-9)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-10)=(ref-call 0)@fi) (@if-using(U-C-10) set ref-class 10 ref-viewer-1 return-from-macro @use not(U-C-10)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-11)=(ref-call 0)@fi) (@if-using(U-C-11) set ref-class 11 ref-viewer-1 return-from-macro @use not(U-C-11)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-13)=(ref-call 0)@fi) (@if-using(U-C-13) set ref-class 13 ref-viewer-1 return-from-macro @use not(U-C-13)@fi)) (pre(set ref-call -(ref-call 18))or(0 @if-using(U-C-31)=(ref-call 0)@fi) (@if-using(U-C-31) set ref-class 31 ref-viewer-1 return-from-macro @use not(U-C-31)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-32)=(ref-call 0)@fi) (@if-using(U-C-32) set ref-class 32 ref-viewer-1 return-from-macro @use not(U-C-32)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-33)=(ref-call 0)@fi) (@if-using(U-C-33) set ref-class 33 ref-viewer-1 return-from-macro @use not(U-C-33)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-34)=(ref-call 0)@fi) (@if-using(U-C-34) set ref-class 34 ref-viewer-1 return-from-macro @use not(U-C-34)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-35)=(ref-call 0)@fi) (@if-using(U-C-35) set ref-class 35 ref-viewer-1 return-from-macro @use not(U-C-35)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-36)=(ref-call 0)@fi) (@if-using(U-C-36) set ref-class 36 ref-viewer-1 return-from-macro @use not(U-C-36)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-38)=(ref-call 0)@fi) (@if-using(U-C-38) set ref-class 38 ref-viewer-1 return-from-macro @use not(U-C-38)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-40)=(ref-call 0)@fi) (@if-using(U-C-40) set ref-class 40 ref-viewer-1 return-from-macro @use not(U-C-40)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-41)=(ref-call 0)@fi) (@if-using(U-C-41) set ref-class 41 ref-viewer-1 return-from-macro @use not(U-C-41)@fi)) (pre(set ref-call -(ref-call 3))or(0 @if-using(U-C-44)=(ref-call 0)@fi) (@if-using(U-C-44) set ref-class 44 ref-viewer-1 return-from-macro @use not(U-C-44)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-45)=(ref-call 0)@fi) (@if-using(U-C-45) set ref-class 45 ref-viewer-1 return-from-macro @use not(U-C-45)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-46)=(ref-call 0)@fi) (@if-using(U-C-46) set ref-class 46 ref-viewer-1 return-from-macro @use not(U-C-46)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-47)=(ref-call 0)@fi) (@if-using(U-C-47) set ref-class 47 ref-viewer-1 return-from-macro @use not(U-C-47)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-49)=(ref-call 0)@fi) (@if-using(U-C-49) set ref-class 49 ref-viewer-1 return-from-macro @use not(U-C-49)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-50)=(ref-call 0)@fi) (@if-using(U-C-50) set ref-class 50 ref-viewer-1 return-from-macro @use not(U-C-50)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-51)=(ref-call 0)@fi) (@if-using(U-C-51) set ref-class 51 ref-viewer-1 return-from-macro @use not(U-C-51)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-52)=(ref-call 0)@fi) (@if-using(U-C-52) set ref-class 52 ref-viewer-1 return-from-macro @use not(U-C-52)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-54)=(ref-call 0)@fi) (@if-using(U-C-54) set ref-class 54 ref-viewer-1 return-from-macro @use not(U-C-54)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-56)=(ref-call 0)@fi) (@if-using(U-C-56) set ref-class 56 ref-viewer-1 return-from-macro @use not(U-C-56)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-57)=(ref-call 0)@fi) (@if-using(U-C-57) set ref-class 57 ref-viewer-1 return-from-macro @use not(U-C-57)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-58)=(ref-call 0)@fi) (@if-using(U-C-58) set ref-class 58 ref-viewer-1 return-from-macro @use not(U-C-58)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-59)=(ref-call 0)@fi) (@if-using(U-C-59) set ref-class 59 ref-viewer-1 return-from-macro @use not(U-C-59)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-60)=(ref-call 0)@fi) (@if-using(U-C-60) set ref-class 60 ref-viewer-1 return-from-macro @use not(U-C-60)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-61)=(ref-call 0)@fi) (@if-using(U-C-61) set ref-class 61 ref-viewer-1 return-from-macro @use not(U-C-61)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-62)=(ref-call 0)@fi) (@if-using(U-C-62) set ref-class 62 ref-viewer-1 return-from-macro @use not(U-C-62)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-63)=(ref-call 0)@fi) (@if-using(U-C-63) set ref-class 63 ref-viewer-1 return-from-macro @use not(U-C-63)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-64)=(ref-call 0)@fi) (@if-using(U-C-64) set ref-class 64 ref-viewer-1 return-from-macro @use not(U-C-64)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-65)=(ref-call 0)@fi) (@if-using(U-C-65) set ref-class 65 ref-viewer-1 return-from-macro @use not(U-C-65)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-67)=(ref-call 0)@fi) (@if-using(U-C-67) set ref-class 67 ref-viewer-1 return-from-macro @use not(U-C-67)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-68)=(ref-call 0)@fi) (@if-using(U-C-68) set ref-class 68 ref-viewer-1 return-from-macro @use not(U-C-68)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-69)=(ref-call 0)@fi) (@if-using(U-C-69) set ref-class 69 ref-viewer-1 return-from-macro @use not(U-C-69)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-70)=(ref-call 0)@fi) (@if-using(U-C-70) set ref-class 70 ref-viewer-1 return-from-macro @use not(U-C-70)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-71)=(ref-call 0)@fi) (@if-using(U-C-71) set ref-class 71 ref-viewer-1 return-from-macro @use not(U-C-71)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-72)=(ref-call 0)@fi) (@if-using(U-C-72) set ref-class 72 ref-viewer-1 return-from-macro @use not(U-C-72)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-73)=(ref-call 0)@fi) (@if-using(U-C-73) set ref-class 73 ref-viewer-1 return-from-macro @use not(U-C-73)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-74)=(ref-call 0)@fi) (@if-using(U-C-74) set ref-class 74 ref-viewer-1 return-from-macro @use not(U-C-74)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-75)=(ref-call 0)@fi) (@if-using(U-C-75) set ref-class 75 ref-viewer-1 return-from-macro @use not(U-C-75)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-76)=(ref-call 0)@fi) (@if-using(U-C-76) set ref-class 76 ref-viewer-1 return-from-macro @use not(U-C-76)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-77)=(ref-call 0)@fi) (@if-using(U-C-77) set ref-class 77 ref-viewer-1 return-from-macro @use not(U-C-77)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-78)=(ref-call 0)@fi) (@if-using(U-C-78) set ref-class 78 ref-viewer-1 return-from-macro @use not(U-C-78)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-80)=(ref-call 0)@fi) (@if-using(U-C-80) set ref-class 80 ref-viewer-1 return-from-macro @use not(U-C-80)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-82)=(ref-call 0)@fi) (@if-using(U-C-82) set ref-class 82 ref-viewer-1 return-from-macro @use not(U-C-82)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-83)=(ref-call 0)@fi) (@if-using(U-C-83) set ref-class 83 ref-viewer-1 return-from-macro @use not(U-C-83)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-84)=(ref-call 0)@fi) (@if-using(U-C-84) set ref-class 84 ref-viewer-1 return-from-macro @use not(U-C-84)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-86)=(ref-call 0)@fi) (@if-using(U-C-86) set ref-class 86 ref-viewer-1 return-from-macro @use not(U-C-86)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-87)=(ref-call 0)@fi) (@if-using(U-C-87) set ref-class 87 ref-viewer-1 return-from-macro @use not(U-C-87)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-88)=(ref-call 0)@fi) (@if-using(U-C-88) set ref-class 88 ref-viewer-1 return-from-macro @use not(U-C-88)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-90)=(ref-call 0)@fi) (@if-using(U-C-90) set ref-class 90 ref-viewer-1 return-from-macro @use not(U-C-90)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-91)=(ref-call 0)@fi) (@if-using(U-C-91) set ref-class 91 ref-viewer-1 return-from-macro @use not(U-C-91)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-93)=(ref-call 0)@fi) (@if-using(U-C-93) set ref-class 93 ref-viewer-1 return-from-macro @use not(U-C-93)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-94)=(ref-call 0)@fi) (@if-using(U-C-94) set ref-class 94 ref-viewer-1 return-from-macro @use not(U-C-94)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-95)=(ref-call 0)@fi) (@if-using(U-C-95) set ref-class 95 ref-viewer-1 return-from-macro @use not(U-C-95)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-96)=(ref-call 0)@fi) (@if-using(U-C-96) set ref-class 96 ref-viewer-1 return-from-macro @use not(U-C-96)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-97)=(ref-call 0)@fi) (@if-using(U-C-97) set ref-class 97 ref-viewer-1 return-from-macro @use not(U-C-97)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-98)=(ref-call 0)@fi) (@if-using(U-C-98) set ref-class 98 ref-viewer-1 return-from-macro @use not(U-C-98)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-99)=(ref-call 0)@fi) (@if-using(U-C-99) set ref-class 99 ref-viewer-1 return-from-macro @use not(U-C-99)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-100)=(ref-call 0)@fi) (@if-using(U-C-100) set ref-class 100 ref-viewer-1 return-from-macro @use not(U-C-100)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-101)=(ref-call 0)@fi) (@if-using(U-C-101) set ref-class 101 ref-viewer-1 return-from-macro @use not(U-C-101)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-102)=(ref-call 0)@fi) (@if-using(U-C-102) set ref-class 102 ref-viewer-1 return-from-macro @use not(U-C-102)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-103)=(ref-call 0)@fi) (@if-using(U-C-103) set ref-class 103 ref-viewer-1 return-from-macro @use not(U-C-103)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-105)=(ref-call 0)@fi) (@if-using(U-C-105) set ref-class 105 ref-viewer-1 return-from-macro @use not(U-C-105)@fi)) (pre(set ref-call -(ref-call 6))or(0 @if-using(U-C-111)=(ref-call 0)@fi) (@if-using(U-C-111) set ref-class 111 ref-viewer-1 return-from-macro @use not(U-C-111)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-112)=(ref-call 0)@fi) (@if-using(U-C-112) set ref-class 112 ref-viewer-1 return-from-macro @use not(U-C-112)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-113)=(ref-call 0)@fi) (@if-using(U-C-113) set ref-class 113 ref-viewer-1 return-from-macro @use not(U-C-113)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-114)=(ref-call 0)@fi) (@if-using(U-C-114) set ref-class 114 ref-viewer-1 return-from-macro @use not(U-C-114)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-115)=(ref-call 0)@fi) (@if-using(U-C-115) set ref-class 115 ref-viewer-1 return-from-macro @use not(U-C-115)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-116)=(ref-call 0)@fi) (@if-using(U-C-116) set ref-class 116 ref-viewer-1 return-from-macro @use not(U-C-116)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-117)=(ref-call 0)@fi) (@if-using(U-C-117) set ref-class 117 ref-viewer-1 return-from-macro @use not(U-C-117)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-118)=(ref-call 0)@fi) (@if-using(U-C-118) set ref-class 118 ref-viewer-1 return-from-macro @use not(U-C-118)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-120)=(ref-call 0)@fi) (@if-using(U-C-120) set ref-class 120 ref-viewer-1 return-from-macro @use not(U-C-120)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-121)=(ref-call 0)@fi) (@if-using(U-C-121) set ref-class 121 ref-viewer-1 return-from-macro @use not(U-C-121)@fi)) (pre(set ref-call -(ref-call 2))or(0 @if-using(U-C-123)=(ref-call 0)@fi) (@if-using(U-C-123) set ref-class 123 ref-viewer-1 return-from-macro @use not(U-C-123)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-124)=(ref-call 0)@fi) (@if-using(U-C-124) set ref-class 124 ref-viewer-1 return-from-macro @use not(U-C-124)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-125)=(ref-call 0)@fi) (@if-using(U-C-125) set ref-class 125 ref-viewer-1 return-from-macro @use not(U-C-125)@fi)) (pre(set ref-call -(ref-call 3))or(0 @if-using(U-C-128)=(ref-call 0)@fi) (@if-using(U-C-128) set ref-class 128 ref-viewer-1 return-from-macro @use not(U-C-128)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-129)=(ref-call 0)@fi) (@if-using(U-C-129) set ref-class 129 ref-viewer-1 return-from-macro @use not(U-C-129)@fi)) default(local(c-1)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED )set ref-n 1 @fi case (pre(set ref-call -(ref-call -113))or(0 @if-using(U-C-16)=(ref-call 0)@fi) (@if-using(U-C-16) set c-1 11 set ref-class 16 ref-viewer-1 return-from-macro @use not(U-C-16)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-17)=(ref-call 0)@fi) (@if-using(U-C-17) set c-1 11 set ref-class 17 ref-viewer-1 return-from-macro @use not(U-C-17)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-18)=(ref-call 0)@fi) (@if-using(U-C-18) set c-1 11 set ref-class 18 ref-viewer-1 return-from-macro @use not(U-C-18)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-19)=(ref-call 0)@fi) (@if-using(U-C-19) set c-1 11 set ref-class 19 ref-viewer-1 return-from-macro @use not(U-C-19)@fi)) (pre(set ref-call -(ref-call 7))or(0 @if-using(U-C-26)=(ref-call 0)@fi) (@if-using(U-C-26) set c-1 11 set ref-class 26 ref-viewer-1 return-from-macro @use not(U-C-26)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-27)=(ref-call 0)@fi) (@if-using(U-C-27) set c-1 11 set ref-class 27 ref-viewer-1 return-from-macro @use not(U-C-27)@fi)) (pre(set ref-call -(ref-call 12))or(0 @if-using(U-C-39)=(ref-call 0)@fi) (@if-using(U-C-39) set c-1 40 set ref-class 39 ref-viewer-1 return-from-macro @use not(U-C-39)@fi)) (pre(set ref-call -(ref-call 42))or(0 @if-using(U-C-81)=(ref-call 0)@fi) (@if-using(U-C-81) set c-1 82 set ref-class 81 ref-viewer-1 return-from-macro @use not(U-C-81)@fi)) (pre(set ref-call -(ref-call 26))or(0 @if-using(U-C-107)=(ref-call 0)@fi) (@if-using(U-C-107) set c-1 5 set ref-class 107 ref-viewer-1 return-from-macro @use not(U-C-107)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-108)=(ref-call 0)@fi) (@if-using(U-C-108) set c-1 5 set ref-class 108 ref-viewer-1 return-from-macro @use not(U-C-108)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-109)=(ref-call 0)@fi) (@if-using(U-C-109) set c-1 5 set ref-class 109 ref-viewer-1 return-from-macro @use not(U-C-109)@fi)) (pre(set ref-call -(ref-call 10))or(0 @if-using(U-C-119)=(ref-call 0)@fi) (@if-using(U-C-119) set c-1 5 set ref-class 119 ref-viewer-1 return-from-macro @use not(U-C-119)@fi)) (pre(set ref-call -(ref-call 8))or(0 @if-using(U-C-127)=(ref-call 0)@fi) (@if-using(U-C-127) set c-1 128 set ref-class 127 ref-viewer-1 return-from-macro @use not(U-C-127)@fi)) default(local(c-2)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED )set ref-n 2 @fi case (pre(set ref-call -(ref-call -125))or(0 @if-using(U-C-2)=(ref-call 0)@fi) (@if-using(U-C-2) set c-1 3 set c-2 4 set ref-class 2 ref-viewer-1 return-from-macro @use not(U-C-2)@fi)) (pre(set ref-call -(ref-call 12))or(0 @if-using(U-C-14)=(ref-call 0)@fi) (@if-using(U-C-14) set c-1 11 set c-2 13 set ref-class 14 ref-viewer-1 return-from-macro @use not(U-C-14)@fi)) (pre(set ref-call -(ref-call 7))or(0 @if-using(U-C-21)=(ref-call 0)@fi) (@if-using(U-C-21) set c-1 11 set c-2 13 set ref-class 21 ref-viewer-1 return-from-macro @use not(U-C-21)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-22)=(ref-call 0)@fi) (@if-using(U-C-22) set c-1 11 set c-2 13 set ref-class 22 ref-viewer-1 return-from-macro @use not(U-C-22)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-23)=(ref-call 0)@fi) (@if-using(U-C-23) set c-1 11 set c-2 13 set ref-class 23 ref-viewer-1 return-from-macro @use not(U-C-23)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-24)=(ref-call 0)@fi) (@if-using(U-C-24) set c-1 11 set c-2 13 set ref-class 24 ref-viewer-1 return-from-macro @use not(U-C-24)@fi)) (pre(set ref-call -(ref-call 4))or(0 @if-using(U-C-28)=(ref-call 0)@fi) (@if-using(U-C-28) set c-1 11 set c-2 13 set ref-class 28 ref-viewer-1 return-from-macro @use not(U-C-28)@fi)) (pre(set ref-call -(ref-call 1))or(0 @if-using(U-C-29)=(ref-call 0)@fi) (@if-using(U-C-29) set c-1 11 set c-2 13 set ref-class 29 ref-viewer-1 return-from-macro @use not(U-C-29)@fi)) (pre(set ref-call -(ref-call 13))or(0 @if-using(U-C-42)=(ref-call 0)@fi) (@if-using(U-C-42) set c-1 43 set c-2 47 set ref-class 42 ref-viewer-1 return-from-macro @use not(U-C-42)@fi)) (pre(set ref-call -(ref-call 47))or(0 @if-using(U-C-89)=(ref-call 0)@fi) (@if-using(U-C-89) set c-1 90 set c-2 49 set ref-class 89 ref-viewer-1 return-from-macro @use not(U-C-89)@fi)) default(ref-case-fun-0)esac))esac))esac ))) (forward ref-case-fun-1) (deffun ref-case-fun-0( case (pre(set ref-call -(ref-call 37))or(0 @if-using(U-C-126)=(ref-call 0)@fi) (@if-using(U-C-126) set c-1 127 set c-2 129 set ref-class 126 ref-viewer-1 return-from-macro @use not(U-C-126)@fi)) default(local(c-3)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED )set ref-n 3 @fi case (pre(set ref-call -(ref-call -89))or(0 @if-using(U-C-37)=(ref-call 0)@fi) (@if-using(U-C-37) set c-1 38 set c-2 39 set c-3 41 set ref-class 37 ref-viewer-1 return-from-macro @use not(U-C-37)@fi)) (pre(set ref-call -(ref-call 6))or(0 @if-using(U-C-43)=(ref-call 0)@fi) (@if-using(U-C-43) set c-1 44 set c-2 45 set c-3 46 set ref-class 43 ref-viewer-1 return-from-macro @use not(U-C-43)@fi)) (pre(set ref-call -(ref-call 36))or(0 @if-using(U-C-79)=(ref-call 0)@fi) (@if-using(U-C-79) set c-1 80 set c-2 81 set c-3 83 set ref-class 79 ref-viewer-1 return-from-macro @use not(U-C-79)@fi)) (pre(set ref-call -(ref-call 6))or(0 @if-using(U-C-85)=(ref-call 0)@fi) (@if-using(U-C-85) set c-1 86 set c-2 87 set c-3 88 set ref-class 85 ref-viewer-1 return-from-macro @use not(U-C-85)@fi)) (pre(set ref-call -(ref-call 21))or(0 @if-using(U-C-106)=(ref-call 0)@fi) (@if-using(U-C-106) set c-1 107 set c-2 108 set c-3 109 set ref-class 106 ref-viewer-1 return-from-macro @use not(U-C-106)@fi)) (pre(set ref-call -(ref-call 4))or(0 @if-using(U-C-110)=(ref-call 0)@fi) (@if-using(U-C-110) set c-1 111 set c-2 112 set c-3 113 set ref-class 110 ref-viewer-1 return-from-macro @use not(U-C-110)@fi)) (pre(set ref-call -(ref-call 12))or(0 @if-using(U-C-122)=(ref-call 0)@fi) (@if-using(U-C-122) set c-1 123 set c-2 124 set c-3 125 set ref-class 122 ref-viewer-1 return-from-macro @use not(U-C-122)@fi)) default(local(c-4)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED )set ref-n 4 @fi case (pre(set ref-call -(ref-call -107))or(0 @if-using(U-C-15)=(ref-call 0)@fi) (@if-using(U-C-15) set c-1 16 set c-2 17 set c-3 18 set c-4 19 set ref-class 15 ref-viewer-1 return-from-macro @use not(U-C-15)@fi)) (pre(set ref-call -(ref-call 5))or(0 @if-using(U-C-20)=(ref-call 0)@fi) (@if-using(U-C-20) set c-1 21 set c-2 22 set c-3 23 set c-4 24 set ref-class 20 ref-viewer-1 return-from-macro @use not(U-C-20)@fi)) (pre(set ref-call -(ref-call 5))or(0 @if-using(U-C-25)=(ref-call 0)@fi) (@if-using(U-C-25) set c-1 26 set c-2 27 set c-3 28 set c-4 29 set ref-class 25 ref-viewer-1 return-from-macro @use not(U-C-25)@fi)) (pre(set ref-call -(ref-call 5))or(0 @if-using(U-C-30)=(ref-call 0)@fi) (@if-using(U-C-30) set c-1 31 set c-2 32 set c-3 33 set c-4 34 set ref-class 30 ref-viewer-1 return-from-macro @use not(U-C-30)@fi)) default(local(c-5)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED )set ref-n 5 @fi case (pre(set ref-call -(ref-call -29))or(0 @if-using(U-C-1)=(ref-call 0)@fi) (@if-using(U-C-1) set c-1 2 set c-2 5 set c-3 11 set c-4 12 set c-5 36 set ref-class 1 ref-viewer-1 return-from-macro @use not(U-C-1)@fi)) (pre(set ref-call -(ref-call 4))or(0 @if-using(U-C-5)=(ref-call 0)@fi) (@if-using(U-C-5) set c-1 6 set c-2 7 set c-3 8 set c-4 9 set c-5 10 set ref-class 5 ref-viewer-1 return-from-macro @use not(U-C-5)@fi)) default(local(c-6)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED )set ref-n 6 @fi case default(local(c-7)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED )set ref-n 7 @fi case (pre(set ref-call -(ref-call 7))or(0 @if-using(U-C-12)=(ref-call 0)@fi) (@if-using(U-C-12) set c-1 13 set c-2 14 set c-3 15 set c-4 20 set c-5 25 set c-6 30 set c-7 35 set ref-class 12 ref-viewer-1 return-from-macro @use not(U-C-12)@fi)) (pre(set ref-call -(ref-call 36))or(0 @if-using(U-C-48)=(ref-call 0)@fi) (@if-using(U-C-48) set c-1 49 set c-2 47 set c-3 43 set c-4 50 set c-5 51 set c-6 52 set c-7 53 set ref-class 48 ref-viewer-1 return-from-macro @use not(U-C-48)@fi)) default(local(c-8)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED ref-viewer-0-8-USED ref-viewer-1-8-USED )set ref-n 8 @fi case default(local(c-9)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED ref-viewer-0-8-USED ref-viewer-1-8-USED ref-viewer-0-9-USED ref-viewer-1-9-USED )set ref-n 9 @fi case default(local(c-10)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED ref-viewer-0-8-USED ref-viewer-1-8-USED ref-viewer-0-9-USED ref-viewer-1-9-USED ref-viewer-0-10-USED ref-viewer-1-10-USED )set ref-n 10 @fi case (pre(set ref-call -(ref-call 7))or(0 @if-using(U-C-55)=(ref-call 0)@fi) (@if-using(U-C-55) set c-1 56 set c-2 57 set c-3 58 set c-4 59 set c-5 60 set c-6 61 set c-7 62 set c-8 63 set c-9 64 set c-10 65 set ref-class 55 ref-viewer-1 return-from-macro @use not(U-C-55)@fi)) default(local(c-11)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED ref-viewer-0-8-USED ref-viewer-1-8-USED ref-viewer-0-9-USED ref-viewer-1-9-USED ref-viewer-0-10-USED ref-viewer-1-10-USED ref-viewer-0-11-USED ref-viewer-1-11-USED )set ref-n 11 @fi case (pre(set ref-call -(ref-call 11))or(0 @if-using(U-C-66)=(ref-call 0)@fi) (@if-using(U-C-66) set c-1 67 set c-2 68 set c-3 69 set c-4 70 set c-5 71 set c-6 72 set c-7 73 set c-8 74 set c-9 75 set c-10 76 set c-11 77 set ref-class 66 ref-viewer-1 return-from-macro @use not(U-C-66)@fi)) (pre(set ref-call -(ref-call 26))or(0 @if-using(U-C-92)=(ref-call 0)@fi) (@if-using(U-C-92) set c-1 93 set c-2 94 set c-3 95 set c-4 96 set c-5 97 set c-6 98 set c-7 99 set c-8 100 set c-9 101 set c-10 102 set c-11 103 set ref-class 92 ref-viewer-1 return-from-macro @use not(U-C-92)@fi)) (pre(set ref-call -(ref-call 12))or(0 @if-using(U-C-104)=(ref-call 0)@fi) (@if-using(U-C-104) set c-1 105 set c-2 106 set c-3 110 set c-4 114 set c-5 115 set c-6 116 set c-7 117 set c-8 118 set c-9 119 set c-10 120 set c-11 121 set ref-class 104 ref-viewer-1 return-from-macro @use not(U-C-104)@fi)) default(local(c-12)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED ref-viewer-0-8-USED ref-viewer-1-8-USED ref-viewer-0-9-USED ref-viewer-1-9-USED ref-viewer-0-10-USED ref-viewer-1-10-USED ref-viewer-0-11-USED ref-viewer-1-11-USED ref-viewer-0-12-USED ref-viewer-1-12-USED )set ref-n 12 @fi case default(local(c-13)( @if-using( ref-viewer-0-0-USED ref-viewer-1-0-USED ref-viewer-0-1-USED ref-viewer-1-1-USED ref-viewer-0-2-USED ref-viewer-1-2-USED ref-viewer-0-3-USED ref-viewer-1-3-USED ref-viewer-0-4-USED ref-viewer-1-4-USED ref-viewer-0-5-USED ref-viewer-1-5-USED ref-viewer-0-6-USED ref-viewer-1-6-USED ref-viewer-0-7-USED ref-viewer-1-7-USED ref-viewer-0-8-USED ref-viewer-1-8-USED ref-viewer-0-9-USED ref-viewer-1-9-USED ref-viewer-0-10-USED ref-viewer-1-10-USED ref-viewer-0-11-USED ref-viewer-1-11-USED ref-viewer-0-12-USED ref-viewer-1-12-USED ref-viewer-0-13-USED ref-viewer-1-13-USED )set ref-n 13 @fi case (pre(set ref-call -(ref-call -51))or(0 @if-using(U-C-53)=(ref-call 0)@fi) (@if-using(U-C-53) set c-1 54 set c-2 55 set c-3 66 set c-4 78 set c-5 79 set c-6 84 set c-7 85 set c-8 89 set c-9 91 set c-10 92 set c-11 104 set c-12 122 set c-13 126 set ref-class 53 ref-viewer-1 return-from-macro @use not(U-C-53)@fi)) default(ref-case-fun-1)esac))esac))esac))esac))esac))esac))esac))esac))esac))esac))esac))esac)) (deffun ref-case-fun-1(message ("invalid " "input! )set ref-call 0)) (deffun ref-abort-unload(load-function not(ref-case-fun ref-case-fun-0 ref-case-fun-1 @if-using( ref-viewer-0-16-USED ref-viewer-0-15-USED ref-viewer-0-14-USED ref-viewer-0-13-USED ref-viewer-0-12-USED ref-viewer-0-11-USED ref-viewer-0-10-USED ref-viewer-0-9-USED ref-viewer-0-8-USED ref-viewer-0-7-USED ref-viewer-0-6-USED ref-viewer-0-5-USED ref-viewer-0-4-USED ref-viewer-0-3-USED ref-viewer-0-2-USED ref-viewer-0-1-USED ref-viewer-0-0-USED )ref-viewer-0 @fi @if-using( ref-viewer-1-21-USED ref-viewer-1-20-USED ref-viewer-1-19-USED ref-viewer-1-18-USED ref-viewer-1-17-USED ref-viewer-1-16-USED ref-viewer-1-15-USED ref-viewer-1-14-USED ref-viewer-1-13-USED ref-viewer-1-12-USED ref-viewer-1-11-USED ref-viewer-1-10-USED ref-viewer-1-9-USED ref-viewer-1-8-USED ref-viewer-1-7-USED ref-viewer-1-6-USED ref-viewer-1-5-USED ref-viewer-1-4-USED ref-viewer-1-3-USED ref-viewer-1-2-USED ref-viewer-1-1-USED ref-viewer-1-0-USED )ref-viewer-1 @fi ))) @if-using not(ABORT-HOOK-ADD)@use (ABORT-HOOK-ADD)( defmac abort-hook-add ( ) )@fi (defmac abort-hook-add-saved(abort-hook-add))(undeclare(abort-hook-add)) (defmac abort-hook-add(set modify-behaviour 0))(undeclare(abort-hook-add-saved)) (undeclare(ref-case-fun ref-class ref-n c-1 c-2 c-3 c-4 c-5 c-6 c-7 c-8 c-9 c-10 c-11 c-12 c-13 c-14 c-15 c-16 c-17 c-18 c-19 c-20 c-21 ref-case-fun-0 ref-case-fun-1 ref-abort-unload @if-using( ref-viewer-0-16-USED ref-viewer-0-15-USED ref-viewer-0-14-USED ref-viewer-0-13-USED ref-viewer-0-12-USED ref-viewer-0-11-USED ref-viewer-0-10-USED ref-viewer-0-9-USED ref-viewer-0-8-USED ref-viewer-0-7-USED ref-viewer-0-6-USED ref-viewer-0-5-USED ref-viewer-0-4-USED ref-viewer-0-3-USED ref-viewer-0-2-USED ref-viewer-0-1-USED ref-viewer-0-0-USED )ref-viewer-0 @fi @if-using( ref-viewer-1-21-USED ref-viewer-1-20-USED ref-viewer-1-19-USED ref-viewer-1-18-USED ref-viewer-1-17-USED ref-viewer-1-16-USED ref-viewer-1-15-USED ref-viewer-1-14-USED ref-viewer-1-13-USED ref-viewer-1-12-USED ref-viewer-1-11-USED ref-viewer-1-10-USED ref-viewer-1-9-USED ref-viewer-1-8-USED ref-viewer-1-7-USED ref-viewer-1-6-USED ref-viewer-1-5-USED ref-viewer-1-4-USED ref-viewer-1-3-USED ref-viewer-1-2-USED ref-viewer-1-1-USED ref-viewer-1-0-USED )ref-viewer-1 @fi )) )) @fi @use not( ref-viewer-0-16-USED ref-viewer-0-15-USED ref-viewer-0-14-USED ref-viewer-0-13-USED ref-viewer-0-12-USED ref-viewer-0-11-USED ref-viewer-0-10-USED ref-viewer-0-9-USED ref-viewer-0-8-USED ref-viewer-0-7-USED ref-viewer-0-6-USED ref-viewer-0-5-USED ref-viewer-0-4-USED ref-viewer-0-3-USED ref-viewer-0-2-USED ref-viewer-0-1-USED ref-viewer-0-0-USED ref-viewer-1-21-USED ref-viewer-1-20-USED ref-viewer-1-19-USED ref-viewer-1-18-USED ref-viewer-1-17-USED ref-viewer-1-16-USED ref-viewer-1-15-USED ref-viewer-1-14-USED ref-viewer-1-13-USED ref-viewer-1-12-USED ref-viewer-1-11-USED ref-viewer-1-10-USED ref-viewer-1-9-USED ref-viewer-1-8-USED ref-viewer-1-7-USED ref-viewer-1-6-USED ref-viewer-1-5-USED ref-viewer-1-4-USED ref-viewer-1-3-USED ref-viewer-1-2-USED ref-viewer-1-1-USED ref-viewer-1-0-USED ) @use( file-reference sokoban-call-ref regexp-reference cmd-reference) @if-using(tags-mac-reference-file-REF) @reference-begin .ad l .TL tags-mac-reference-file @reference-end @fi @if-using ( complete ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB1 Description\fP @reference-end @fi @if-using ( complete ) @if-using(tags-mac-reference-file-REF) @reference-begin .LP This is a libary file, supporting the standard (vi-known) tags file for moving to other positions and tag-completion! .LP This package can only be used, if Origami is compiled to support regular expressions\&. .sp .LP \fB1.1 conditional compilation\fP .LP If this package is included more than once, all needed tags have to be defined at the first include! The following tags can be set: .TS center box tab(); l | l. TagFunction _ E-G-T-ABUFFenter-and-go-tags-adjacent-buffer E-G-T-BUFFenter-and-go-tags-buffer E-O-T-ABUFFenter-and-open-tags-adjacent-buffer E-O-T-BUFFenter-and-open-tags-buffer F-G-T-ABUFFfind-and-go-tags-adjacent-buffer F-G-T-BUFFfind-and-go-tags-buffer F-O-T-ABUFFfind-and-open-tags-adjacent-buffer F-O-T-BUFFfind-and-open-tags-buffer FE-G-T-ABUFFfind-or-enter-and-go-tags-adjacent-buffer FE-G-T-BUFFfind-or-enter-and-go-tags-buffer FE-O-T-ABUFFfind-or-enter-and-open-tags-adjacent-buffer FE-O-T-BUFFfind-or-enter-and-open-tags-buffer GO-TAG-MARKgo-tag-mark I-T-FILEinsert-tags-file O-T-AFILEopen-adjacent-buffer-tags-file O-T-FILEopen-buffer-tags-file Q-U-G-T-BUFFquit-unchanged-to-other-buffer S-N-I-Tsearch-next-incorrect-tag-entry S-U-T-FILEset-user-tag T-COMPtag-completion .TE .LP If your filesystems uses special names for absolut filenames, define the tag ROOT-TEST and a function, returning true, if the word starting at current cursor position is an absolute filename\&. .br .sp .LP \fB1.2 error/message return\fP .LP The OCL-variable tags-error contains the error/message coding for the tags actions: .TS center box tab(); l | l. ValueError/Message _ 0ok 1tagged file edited more than once 2no tag iven 3cannot open tags-file 4no valid tag in tags-file 5cannot open tagged file 6tag notfound in tagged file 7File edted only once 8Currentbuffer is changed 9position not found in other buffer (folds entered) 10position not found in other buffer 11using yur tags file first 12using dfault tags files 13Sorry, o regular expressions! *unspecified error .TE .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete file-reference ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB2 Tags file\fP @reference-end @fi @if-using ( complete file-reference ) @if-using(tags-mac-reference-file-REF) @reference-begin .LP If you want to use the tags facilities, Origami needs to read a special tags file\&. The functions try to use the first of the following files: .TS center box tab(); l. File _ directory-of-file/tags or file/tags (*) tags ~/tags ~/\&.oritags .TE .IP "* " depending on the type of the current file\&. .LP During the editor session, you can specify another tags file, using function set-user-tags-file\&. .LP Entries in the tags file are normal tags entries: .sp .LP \fB2.1 tag filename search-exp\fP .TS center box tab(); l | l. ItemMeaning _ tagname of a tag, a string filenamea string search-exp/^text$/ ?^text$? /^text/ ?^text? /text$/ ?text$? /text/ ?text? .TE .LP These entries might be produced by ctags! .br .sp .LP \fB2.2 tag filename line-number\fP .TS center box tab(); l | l. ItemMeaning _ tagname of a tag, a string filenamea string line-numbera sequence of digits 0\&.\&.9 .TE .LP These entries might be produced by ctags! .br .sp .LP \fB2.3 tag file Bexpression\fP .TS center box tab(); l | l. ItemMeaning _ tagname of a tag, a string filenamea string expressiona basic-regular search expression .TE .LP These entries are an extension to the standard tags syntax! .br .sp .LP \fB2.4 tag file Eexpression\fP .TS center box tab(); l | l. ItemMeaning _ tagname of a tag, a string filenamea string expressiona extended-regular search expression .TE .LP These entries are an extension to the standard tag syntax! .br .sp .LP \fB2.5 string\fP .LP `tag-completion' reads only the first word on the lines\&. So a line containing a simple string can be used to add keywords for tag-completion! Such short entries cannot be used for jumping to a tagged position! .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB3 Tags\fP @reference-end @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .LP Tags are defined using two character sets: .IP "c-tags-x-word-set / c-tags-word-set " tag names are buildt using only these characters, c-tags-x-word-set is only used, if language None is active\&. .IP "c-tags-start-word-set: " first character has to be in this set .LP Default values are: .LP .DS ( defset c-tags-start-word-set ( alpha ) ) ( defset c-tags-word-set ( alpha digit "_ ) ) ( defset c-tags-x-word-set ( c-tags-word-set "- ) ) .DE Changing these sets at runtime, changes the tag-search algorythm! c-tags-start-word-set has to be a subset of c-tags-word-set! @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete quit-unchanged-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-go-ref fe-ago-ref go-tag-mark-ref find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref set-tf-ref in-tf-ref o-tf-ref ao-tf-ref tag-completion ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4 Functions and macros\fP @reference-end @fi @if-using ( complete quit-unchanged-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.1 quit-unchanged-to-other-buffer\fP .LP If the current buffer contains a unchanged file, also edited in other buffer[s], the macro tries to reach the same position in the other buffer\&. Searching with a regular expression for the current line does not exit entered folds! .br @reference-end @fi @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref find-go-ref find-ago-ref enter-go-ref enter-ago-ref fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref go-tag-mark-ref ) @if-using ( complete go-tag-mark-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.2 go-tag-mark\fP .LP This is the function, used by all enter/find tags commands\&. It uses three boolean arguments: .IP "adjacent " open buffer adjacent .IP "unique " switch to existing buffer, if possible .IP "extend " is tags given as prefix .LP It uses the last value in search-history\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .br @reference-end @fi @fi @if-using ( complete find-open-ref find-aopen-ref enter-open-ref enter-aopen-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.3 open tags buffer\fP @reference-end @fi @if-using ( find-open-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.3.1 find-and-open-tags-buffer\fP .LP Open a new buffer, using the word under the cursor as tag\&. .LP See also in 3 Tags\&. .br @reference-end @fi @fi @if-using ( find-aopen-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.3.2 find-and-open-tags-adjacent-buffer\fP .LP Open a new adjacent buffer, using the word under the cursor as tag\&. .LP See also in 3 Tags\&. .br @reference-end @fi @fi @if-using ( enter-open-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.3.3 enter-and-open-tags-buffer\fP .LP Open a new buffer for a tag, the macros prompt for\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP See also in 3 Tags\&. .LP enter-and-open-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using ( enter-aopen-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.3.4 enter-and-open-tags-adjacent-buffer\fP .LP Open a new adjacent buffer for a tag, the macros prompt for\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP See also in 3 Tags\&. .LP enter-and-open-tags-adjacent buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete find-go-ref find-ago-ref enter-go-ref enter-ago-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.4 go tags buffer\fP @reference-end @fi @if-using ( find-go-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.4.1 find-and-go-tags-buffer\fP .LP Open a new buffer, using the word under the cursor as tag\&. Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .br @reference-end @fi @fi @if-using ( find-ago-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.4.2 find-and-go-tags-adjacent-buffer\fP .LP Open a new adjacent buffer, using the word under the cursor as tag\&. Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .br @reference-end @fi @fi @if-using ( enter-go-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.4.3 enter-and-go-tags-buffer\fP .LP Open a new buffer for a tag, the macros prompt for\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .LP enter-and-go-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using ( enter-ago-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.4.4 enter-and-go-tags-adjacent-buffer\fP .LP Open a new buffer for a tag, the macros prompt for\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .LP enter-and-go-tags-adjacent-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete fe-open-ref fe-aopen-ref fe-go-ref fe-ago-ref) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.5 find or enter tags buffer\fP @reference-end @fi @if-using ( fe-open-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.5.1 find-or-enter-and-open-tags-buffer\fP .LP Open a new buffer for a tag, using the word under the cursor\&. If failling, the macros prompts for a tag\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP See also in 3 Tags\&. .LP find-or-enter-and-open-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using ( fe-aopen-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.5.2 find-or-enter-and-open-tags-adjacent-buffer\fP .LP Open a new adjacent buffer for a tag, using the word under the cursor\&. If failling, the macros prompts for a tag\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP See also in 3 Tags\&. .LP find-or-enter-and-open-tags-adjacent-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using ( fe-go-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.5.3 find-or-enter-and-go-tags-buffer\fP .LP Open a new buffer for a tag, using the word under the cursor\&. If failling, the macros prompts for a tag\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .LP find-or-enter-and-go-tags-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using ( fe-ago-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.5.4 find-or-enter-and-go-tags-adjacent-buffer\fP .LP Open a new adjacent buffer for a tag, using the word under the cursor\&. If failling, the macros prompts for a tag\&. Using filename-completion will end the input and searches the first tag, beginning with the given string! .LP Tries quit-unchanged-to-other-buffer-ref to reduce the number of buffers\&. .LP See also in 3 Tags\&. .LP See also in 4.1 quit-unchanged-to-other-buffer\&. .LP find-or-enter-and-go-tags-adjacent-buffer calls the hooks begin-prompt-macro and end-prompt-macro, so they have to be defined here, if you need them! .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @fi @if-using ( complete set-tf-ref in-tf-ref o-tf-ref ao-tf-ref ) @if-using ( complete set-tf-ref in-tf-ref o-tf-ref ao-tf-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.6 handling tags file\fP @reference-end @fi @if-using ( set-tf-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.6.1 set-user-tag\fP .LP Don't use the default tags-file, but define your own\&. You can control the first tags file by other funtions, setting the history tags-file to the correct filename\&. This history will be used, if OCL variable tags-user-tags-file is not set to false=0! .br @reference-end @fi @fi @if-using ( in-tf-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.6.2 insert-tags-file\fP .LP Like insert-file, but does not prompt for a filename\&. .br @reference-end @fi @fi @if-using ( o-tf-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.6.3 open-buffer-tags-file\fP .LP Like open-buffer, but does not prompt for a filename\&. If no tags file can be reached, the command will be ignored\&. .br @reference-end @fi @fi @if-using ( ao-tf-ref ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.6.4 open-adjacent-buffer-tags-file\fP .LP Like open-adjacent-buffer, but does not prompt for a filename\&. If no tags file can be reached, the command will be ignored\&. .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @fi @if-using ( complete tag-completion ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB4.7 tag-completion\fP .LP Similar to origamis filename-completion\&. This function looks only at the tag names\&. You may add your own symbols for completion\&. These entries may be lines containing only the completion string! .LP This function can not be used inside prompts! .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete ) @if-using(tags-mac-reference-file-REF) @reference-begin .sp .LP \fB5 Hooks\fP @reference-end @fi @if-using ( complete ) @if-using(tags-mac-reference-file-REF) @reference-begin .LP The libary defines a macro `abort-hook-add' and a OCL tag ABORT-HOOK-ADD\&. This macro should be added to your abort-macro! If needed, an existing macro `abort-hook-add' will be integrated! .LP The function `set-user-tags-file' can be simulated, by changing the value of history `tags-file' and setting variable `tags-user-tags-file' to non-zero\&. If `tags-user-tags-file' is zero, the default list is used\&. @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using(tags-mac-reference-file-REF) @reference-begin .br @reference-end @fi @if-using(sokoban-reference-file-REF) @reference-begin .ad l .TL sokoban-reference-file @reference-end @fi @if-using ( complete ) @if-using(sokoban-reference-file-REF) @reference-begin .sp .LP \fB1 Description\fP @reference-end @fi @if-using ( complete ) @if-using(sokoban-reference-file-REF) @reference-begin .LP This library defines a function for playing the well known game `Sokoban'\&. Therefor the file `~/\&.orisokoban' is used to store the game boards\&. The file will be generated automatically with language Inmos, to prevent problems with different fold marks\&. Each level is stored in a fold, using the following coding: .IP "# " wall .IP "\&. " base .IP "$ " stone .IP "* " stone on base .IP "@ " cursor .IP "+ " cursor on base .LP The library defines a own keyboard\&. So it can only be used for bindings with multiple modes\&. The mode is named `sokoban-kbd'\&. The functions .LP .DS soko-go-or-push-up, soko-run-or-push-up, soko-run-up soko-go-or-push-down, soko-run-or-push-down, soko-run-down soko-go-or-push-left, soko-run-or-push-left, soko-run-left soko-go-or-push-right, soko-run-or-push-right, soko-run-right .DE are not undeclared, so they can be bound to your cursor keys\&. This library uses only the vi based bindings (hjkl)\&. .LP You have to define a function `SOKOBAN-RESET-KBD', which resets the keytables to your default table\&. @reference-end @fi @fi @if-using(sokoban-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete sokoban-call-ref ) @if-using(sokoban-reference-file-REF) @reference-begin .sp .LP \fB2 Functions and macros\fP @reference-end @fi @if-using ( complete sokoban-call-ref ) @if-using(sokoban-reference-file-REF) @reference-begin .sp .LP \fB2.1 sokoban\fP .LP You can play the well known game\&. You have to push the pakets to the bases\&. Bases are marked with `\&.'\&. Pakets are marked with `$', or `S' on bases\&. Running or pushing through walls (`#') is not possible\&. .TS center box tab(); l | l | l. FunctionKeyComment _ go-or-push-upk run-or-push-upKrepeat and stop at wall run-upC-Krepeat and stop at wall or paket go-or-push-downj run-or-push-downJrepeat and stop at wall run-downC-Jrepeat and stop at wall or paket go-or-push-lefth run-or-push-leftHrepeat and stop at wall run-leftC-Hrepeat and stop at wall or paket go-or-push-rightl run-or-push-rightLrepeat and stop at wall run-rightC-Lrepeat and stop at wall or paket undo-last-moveuif repeated, only the last one next-level+level has not to be solved previous-level- savesnot over different editing sessions resetrto last save or start, if no save restart-levelRto start quitq describe-bindings? .TE .LP Starting a level calls save automatically! .br @reference-end @fi @fi @if-using(sokoban-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using ( complete ) @if-using(sokoban-reference-file-REF) @reference-begin .sp .LP \fB3 Hooks\fP @reference-end @fi @if-using ( complete ) @if-using(sokoban-reference-file-REF) @reference-begin .LP The libary defines a macro `abort-hook-add' and a OCL tag ABORT-HOOK-ADD\&. This macro should be added to your abort-macro! If needed, an existing macro `abort-hook-add' will be integrated! .LP The libary functions are marked as demand-loading\&. .LP If you do not wnt to use the default file `~/\&.orisokoban', define the tag and function SOKOBAN-FILE\&. @reference-end @fi @fi @if-using(sokoban-reference-file-REF) @reference-begin .br @reference-end @fi @fi @if-using(sokoban-reference-file-REF) @reference-begin .br @reference-end @fi @if-using(CommonUsedReferences-REF) @reference-begin .ad l .TL CommonUsedReferences @reference-end @fi @if-using ( regexp-reference ) @if-using(CommonUsedReferences-REF) @reference-begin .sp .LP \fB1 Origami Regular Expressions\fP .LP Origami supports regular expression search and replace\&. The syntax widely conforms POSIX extended or basic regular expressions\&. .sp .LP \fB1.1 Character Match\fP .TS center box tab(); l | l | l. BasicExtendedMatches _ <char><char><char>, if not a special character \e<char>\e<char><char>, if a special character \&.\&.any character ^^start of line, if at begin of exp\&. $$end of line, if at end of exp\&. [<class>]<class>]any char in <class> [^<class>]^<class>]any char not in <class> <class> is a list of ) <char> ) <char>-<char> ) [:<set>:] (*) .TE .IP "(*) " <set> can be `alpha', `upper', `lower', `digit', `xdigit', `alnum', `blank', `space', `print', `cntrl', `graph' or `punct'\&. See your local ctype documentation for detailed information\&. .br .sp .LP \fB1.2 Complex Expressions\fP .TS center box tab(); l | l | l. BasicExtendedMatches(*) _ <e1> <e2><e1> <e2>concatenation of strings <s1> <s2> \e(<e>\e)(<e>)<s>, used for grouping and \ex in replacement <e1>\e|<e2><e1>|<e2><s1> or <s2> <e>\e+<e>+one or more strings, matching <e> <e>\e?<e>?zero on one string, matching <e> <e>*<e>*zero or more strings, matching <e> <e>\e{<n>\e}<e>{<n>}<n> strings, matching <e> <e>\e{<n>,<m>\e}<e>{<n>,<m>}<n> to <m> strings, matching <e> \e!<e>!<e>if at begin of line: next line, not matching <e> .TE .IP "(*) " <e>,<e1> and <e2> are regular expressions and strings <s>,<s1> and <s2> are strings, matching the corresponding expressions\&. <n> and <m> are integers\&. .br .sp .LP \fB1.3 Replace Expressions\fP .LP In regular expression replace, the following special expressions are allowed (any character, not used for special purpose, can be used for itself): .TS center box tab(); l | l. ExpressionMeaning(*) _ \e<x>the <x>-th group in the search pattern \eu<x>the <x>-th group, all characters uppercase \el<x>the <x>-th group, all characters lowercase \e{<x><e>}<s> length limited by length of <x>-th group (**) \e?<x><e>}<s>, if the <x>-th group matches \e!<x><e>}<s>, if the <x>-th group does not match \e}} \e\e\e .TE .IP "(*) " <x> can be 0 \&.\&. 9 and g10 \&.\&. g16\&. The <x>-th group is the part of the matching string, matched by the part of the regular expressions in the <x>-th pair of ()\&. 0 is used for the complete string\&. <e> is a replace expression and <s> the corresponding string\&. .IP "(**) " For short strings <s>, the last character will be used for padding\&. Use `\e0' as last character to prevent padding\&. .br .br @reference-end @fi @fi @if-using ( cmd-reference ) @if-using(CommonUsedReferences-REF) @reference-begin .sp .LP \fB2 Origami Command Line Options\fP .TS center box tab(); l | l. OptionFunction _ -a delayspecify time between auto-saves (1<=delay<=60,default=8) -Aopen the list of files, instead of first file -Cdisable copyright message -Ddump on crash -d dspmodespecify display mode (*) -eechoing keyboard input on -hshow available command line arguments -ishow ctrl-chars inverse -k namespecify other rc-file -K statechoose keypad mode N -> numerical A -> application -l numberfirst line in file -m namemarks for fold-display -M markslike -m, but give strings directly -nload files without fold-parsing -N linesspecify size of virtual line handling buffer -ostart in overwrite-mode -O valuepass data to OCL -puse c-preprocessor-mode -Pdo not open control terminal, if stdin isn't -R rcpathpathlist for rc,help and msg-file -S cmduse cmd as shell pipe-commands are disabled -t widthspecify the size of tabs -T namespecify window name, after exiting Origami -vstart in view-mode -Vverbose-mode -W namedisplay name in statusline -X stringspecify OS-dependent stuff -Zdisable suspend-origami .TE .IP "* " dspmode is a sequence of: .TS center box tab(); l | l. CodeMeaning _ ooctal display (C-?k: \e177) ddecimal display (C-?: \ed127) hhexadecimal display (C-?: \e7F) mmark control characters iinverse control characters nnumbered control characters pnormal characters display 8numbered display of 8-bit characters anumbered character display t tabspecify tab width (tab<=0: tab like control) .TE .br @reference-end @fi @fi @if-using(CommonUsedReferences-REF) @reference-begin .br @reference-end @fi @if-using(EMacs-Reference-Card-REF) @reference-begin .ad l .TL EMacs - Reference Card .AU Michael Haardt .AB no This is the reference file for EMacs, a binding for the folding-editor Origami\&. .AE .sp .LP \fB1 EMacs Command Line Options\fP .LP You can use the following commad line options, to control the modes of EMacs: .TS center box tab(); l | l | l. OffOnMode _ -Onotime-Otimetime display in the statusline -Onoposi-Oposiposition display in the statusline -Onofull-Ofullfull shifting display -Onoai-Oaiautoindent -Onomagic-Omagicregular exprsession search -Onomagic-Oxmagicextended regular expression search -Onoc-Occ-mode .TE .LP You can also use the option '-Odefault' to use the default values: .LP .DS -Otime -Onoposi -Onofull -Oai -Onomagic -Onoc .DE .br See also in: CommonUsedReferences - 2 Origami Command Line Options See also in: CommonUsedReferences - 1 Origami Regular Expressions .sp \fB4 Messages, errors and prompts\fP Sometimes EMacs may want to tell you something, like when you did something which EMacs does not allow\&. If it is something simple, such as typing a control key sequence which is not associated with any command, EMacs will just ignore it\&. Otherwise, it will also display an informative error message at the bottom of the screen\&. Simple messages are displayed in brackets, prompts will appear without brackets and end with a question mark\&. .LP When starting using verbose mode, EMacs will be less ignorant and tell you more\&. Look under command line switches and/or modes on how to use modes\&. .br .sp .LP \fB5 The status line and the message line\fP .LP The line immediately above the bottom line is referred to as the "mode line"\&. The mode line looks something like .LP .DS * EMacs 1\&.6\&.79 (None) teach-emacs .DE This is a very useful "information" line\&. .IP "asterisk (star) " indicates that changes have been made to the file\&. Immediately after opening or saving a file, there is no star\&. .IP "name (""EMacs"" in this case) " shows the name of your compiled keybinding, which runs on top of the Origami interpreter\&. .IP "words inside the parentheses " indicate the "modes" EMacs is currently in\&. .IP "filename (""teach-emacs"" in this case) " is the name of the file you are currently editing\&. .LP If you use more than one window, each window will have its own mode line\&. .br .sp .LP \fB6 Used notation of input\fP .LP In the following sections, the notation below is used to describe which commands are bound to which keys or sequences of keys\&. .IP "C-<chr> " Hold the CONTROL key while pressing the character <chr>\&. Thus, C-F would be: hold the CONTROL key and press F\&. Some people may be used to see ^F, here it is C-F\&. .IP "M-<chr> " If you have no Meta key, then press the ESCAPE key and release it, then press the character <chr>\&. Alternatively, if your keyboard has a meta key, then hold it down while typing <chr>\&. .IP "M-C-<chr> " If you have no Meta key, then press the ESCAPE key and release it, then hold the CONTROL key while pressing the character <chr>\&. Otherwise, hold down Meta and Control while typing <chr>\&. .br .sp .LP \fB7 Bound keys and key sequences\fP .LP Each key inserts/overwrites its character at the current cursor position, unless it is bound to a command, in which case the command will be started\&. If the key is start of a key sequence to which a command is bound, EMacs will wait for the rest of that sequence and show what was typed so far in the message line\&. Killing text means that the text will be erased from the buffer and appended to the kill buffer whereas deleting text means just erasing it, although a limited undo function is available\&. .sp .LP \fB7.1 The general abort command\fP .IP "C-G " The EMacs command used to abort any command, no matter if it requests input or not, is C-G\&. For example, you can used C-G to discard a numeric argument, at the beginning of a command that you don't want to finish, to abort loading big files and to abort running macros\&. .br .sp .LP \fB7.2 Cursor motion\fP .sp .LP \fB7.2.1 Basic cursor control (up, down, left, right)\fP .LP Not the best, but the most basic way to move the cursor is to use the commands previous-line, backward-character, forward-character and next-line\&. Here, in a more graphical form, are the commands: .LP .DS Previous line, C-P : Backward, C-B \&.\&. Current cursor position \&.\&. Forward, C-F : Next line, C-N .DE You'll probably find it easy to think of these by letter: P for previous, N for next, B for backward and F for forward\&. When you go off the top or bottom of the screen, the text beyond the edge is shifted onto the screen so that your instructions can be carried out while keeping the cursor on the screen\&. If your terminal is supported, then the cursor keys will work as well\&. .br .sp .LP \fB7.2.2 Move cursor backward/forward one word\fP .IP "M-b " backward-word, moves the cursor back one word\&. .IP "M-f " backward-word, moves the cursor forward one word\&. .br .sp .LP \fB7.2.3 Move cursor backward/forward one sentence\fP .LP The end of a sentence in EMacs means a line with a period at its end or a period followed by two spaces\&. .IP "M-B " backward-sentence\&. Moves the cursor to the beginning of the last sentence\&. .IP "M-F " forward-sentence\&. Moves the cursor to the beginning of the next sentence\&. .br .sp .LP \fB7.2.4 Move cursor to the previous/next paragraph\fP .LP A paragraph in EMacs is text without blank lines and without a period in the first column\&. .IP "M-p " previous-paragraph, moves the cursor to the previous paragraph\&. .IP "M-n " next-paragraph, moves the cursor to the next paragraph\&. .br .sp .LP \fB7.2.5 Move cursor to the previous/next page\fP .IP "M-v " previous-page, move one page back\&. If your terminal is supported, then the NextPage key will also work\&. .IP "C-V " next-page, move one page forward\&. If your terminal is supported, then the PreviousPage key will also work\&. .br .sp .LP \fB7.2.6 Move cursor to the beginning/end of a line\fP .IP "C-A " beginning-of-line, move to the beginning of line\&. If your terminal is supported, the begin key will also work\&. .IP "C-E " end-of-line, move to the end of line\&. If your terminal is supported, the end key will also work\&. .br .sp .LP \fB7.2.7 Move cursor to the beginning/end of a fold\fP .IP "M-< " beginning-of-fold, move to the beginning of the entered fold\&. If your terminal is supported, the home key will also work\&. .IP "M-> " end-of-fold, move to the end of the entered fold\&. .br .sp .LP \fB7.2.8 Move cursor to line with a specific number\fP .IP "M-g " go-to-line, moves the cursor to the specified line in an entered fold\&. With a numeric argument, Origami jumps to that line, otherwise a prompt asking for it will be issued\&. .br .sp .LP \fB7.2.9 Move cursor to matching paren, bracket or brace\fP .IP "M-# " goto-matching-fence, move cursor to matching paren, bracket or brace\&. If the cursor stands not on one of the above mentioned fences, EMacs tries to find one of the following more complex structures (Skip1 -> Skip2 [ -> Skip3 ] -> Skip1 \&.\&. ): .TS center box tab(); l | l | l | l. LanguageSkip1Skip2Skip3 _ all#ifdef#else#endif all#if#else#endif OCL@if-using@fi .TE .br .sp .LP \fB7.2.10 Move cursor in and out of folds\fP .IP "C-O " open-fold, opens the fold under the cursor\&. If your terminal is supported, then the open key will work as well\&. .IP "C-C " close-fold, closes the current fold and folds inside it\&. If your terminal is supported, then the close key will work as well\&. .IP "M-C-O " enter-fold, enters the fold under the cursor\&. If the line is not a fold, Origami tries to follow the given include statement or prompts for a filename\&. The environement variable `ORIGAMILIBPATH' may contain a `:' separated list of directories (default is `/usr/include')\&. .IP "M-C-C " exit-fold, exits the current fold\&. .br .br .sp .LP \fB7.3 Editing\fP .sp .LP \fB7.3.1 Creating a new line\fP .IP "C-M " newline-and-indent, splits the line at the cursor position\&. If mode .IP "C-J " Autoindent is active, then the new line is indented as the previous line\&. .br .sp .LP \fB7.3.2 Deleting characters\fP .IP "C-H " delete-previous-character, deletes the character left to the cursor\&. Most backspace keys also send C-H\&. .IP "C-D " delete-character, deletes the character under the cursor\&. Most .IP "C-? " delete keys also send a C-?\&. .br .sp .LP \fB7.3.3 Exchanging characters\fP .IP "C-T " transpose-characters, exchanges the character under the cursor with the character left from the cursor, then moves the cursor forward one character\&. .br .sp .LP \fB7.3.4 Deleting words\fP .IP "M-C-H " delete-word-backward, deletes word backwards from cursor position\&. .IP "M-C-D " delete-word, deletes word under cursor position\&. .br .sp .LP \fB7.3.5 Changing capitalization of words\fP .IP "M-c " case-word-capitalize, capitalizes the word starting at cursor position and moves the cursor forward one word\&. .IP "M-u " case-word-upper, changes the word to upper case starting at cursor position and moves the cursor forward one word\&. .IP "M-l " case-word-lower, changes the word to lower case starting at cursor position and moves the cursor forward one word\&. .br .sp .LP \fB7.3.6 Killing, deleting, and getting erased text back\fP .IP "C-K " kill-line, kills all text from cursor position to end of line\&. If the cursor was already at the end of the line, the newline character ending the line will be killed, joining the current line with the next line\&. .IP "M-C-K | delline " delete-line, deleted all text from cursor position to end of line\&. If the cursor was already at the end of the line, the newline character ending the line will be deleted, joining the current line with the next line\&. .IP "C-Y " insert-folded-kill-buffer, moves the kill buffer in a fold and yanks this fold back .IP "C-X C-Y " undo-delete-line, yank the last deleted line back .br .sp .LP \fB7.3.7 copy-to-kill-buffer\fP .IP "M-k " copy-to-kill-buffer, appends the line to the kill buffer without killing it .br .sp .LP \fB7.3.8 unfold-fold\fP .IP "C-U " unfold-fold, removes the fold marks of the fold under the cursor .br .sp .LP \fB7.3.9 auto-header\fP .IP "C-X C-H " auto-header, copies the first in of the fold under the cursor to the fold header .br .sp .LP \fB7.3.10 toggle-file-fold\fP .IP "C-X C-F " toggle-file-fold, toggles between a fold and a file-fold .br .sp .LP \fB7.3.11 toggle-attach-file-to-fold\fP .IP "C-X C-A " toggle-attach-file-to-fold, attaches a file to a fold to create a file-fold for an already existing file, or unlinks the file from the fold .br .br .sp .LP \fB7.4 Regions\fP .LP Regions in EMacs are parts of the buffer, one end marked by an invisible mark, the other by the cursor\&. The region includes the beginning position and excludes the ending position\&. Regions have to respect the fold structure\&. .IP "C-@ " set-mark, set an invisible mark at the current cursor position\&. This function is also bound to control-space, because most keyboards generate the same character on C-@ and control-space\&. .IP "C-X C-X " change-mark-and-position, set the invisible mark at the cursor position and move the cursor to the previos location of the mark\&. .IP "C-X x " highlight-region, show the marked region highlighted\&. A set argument will enhance the display time\&. .IP "M-C-W " delete-region, delete a region\&. This can be undone by undo-delete-line\&. .IP "C-W " kill-region, move the region to the kill buffer\&. .IP "M-w " copy-region, copy the region in the kill buffer\&. .IP "M-C-@ " fold-region, folds the region\&. .br .sp .LP \fB7.5 Search/replace\fP .sp .LP \fB7.5.1 Search for a string\fP .IP "M-C-S " search-forward, prompts for a string and moves the cursor to the next occurence of it\&. .IP "M-C-R " search-reverse, prompts for a string and moves the cursor to the last occurence of it\&. .br .sp .LP \fB7.5.2 Incremental search for a string\fP .LP Incremental search allows you to see the result of the search while the search string is typed/changed\&. .IP "C-S " incremental-search-forward, switches to incremental search mode with default direction forward\&. .IP "C-R " incremental-search-reverse, switches to incremental search mode with default direction backward\&. .sp .LP \fB7.5.2.1 Functions in incremental search mode\fP .LP During incremental search, you can use the following commands: .IP "<chr> " Append the character to the search pattern and search in current search direction\&. .IP "C-S " Move the cursor to the next occurence of the search string and switch to search direction forward\&. .IP "C-R " Move to the previous occurence and switch to searching backward\&. .IP "C-P " Go back in search history\&. .IP "C-N " Go forward in search history\&. .IP "C-M | C-J " exit incremental search, leave the cursor where it is\&. .IP "C-H " remove last letter from search pattern\&. .IP "C-G " aborts incremental search, sets the cursor to where it was before\&. .br .br .sp .LP \fB7.5.3 Search and replace\fP .IP "M-R " replace-string, asks for a search string and a replace string and replaces all occurences of the search string by the replace string\&. .IP "M-R " query-replace-string, asks for a search string and a replace string and gives the choice to replace the search string by the replace string at all occurences\&. During query-replace-string the following commands are available: .RS .IP "Y " replace and go to next occurence .RE .RS .IP "N " don't replace and go to next occurence .RE .RS .IP "! " replace all further occurences .RE .RS .IP "A " abort .RE .RS .IP "\&. " replace this occurence and abort after .RE .br .br .sp .LP \fB7.6 Files\fP .IP "C-X C-I " insert-file, inserts the contents of a file at the current position into the buffer\&. .IP "C-X C-S " save-file, writes the buffer back to the edited file\&. If your terminal is supported, the save key will also work\&. .IP "C-X C-W " write-file, writes the buffer to another file\&. .IP "C-X C-R " read-file, reads another file into the buffer\&. A set argument will read the file without parsing\&. The state of the mode parsing will not be changed\&. .IP "C-X C-N " next-file, reads next file from command line argument list into the buffer\&. .IP "C-X C-P " previous-file, reads previous file from command line argument list into the buffer\&. .IP "M-~ " set-file-unchanged, marks the buffer as unchanged\&. .br .sp .LP \fB7.7 Buffers\fP .LP Origami has a different buffer concept than most other emacs implementations\&. Each buffer has its own (and only) window to edit it\&. Buffers may not be currently visible, so list-buffers is an important function if you get lost\&. .IP "C-X C-B " list-buffers, show a list of all used buffers and offers a menu for selecting another buffer (return moves you back to the old position)\&. If your terminal supports it, the select key will also work\&. .IP "C-X b " change-buffername, changes the name of the current buffer .sp .LP \fB7.7.1 Opening and closing buffers\fP .IP "C-X ""2 " open-buffer, open a second buffer by parting the current window horizontally\&. A set argument will read the file without parsing\&. The state of the mode parsing will not be changed\&. .IP "C-X ""3 " open-adjacent-buffer, open a second buffer by parting the current window vertically\&. A set argument will read the file without parsing\&. The state of the mode parsing will not be changed\&. .IP "C-X ""0 " exit-buffer, close the current buffer and unify the window with the window of the previous buffer .IP "C-X @ " show a special buffer containing the last messages\&. .br .sp .LP \fB7.7.2 Changing between buffers\fP .IP "M-C-X p " previous-buffer, go to the previous buffer\&. .IP "M-C-X n " next-buffer, go to the next buffer\&. .IP "C-X o " other-buffer, go cyclic to the next buffer\&. .IP "M-C-X C-P " up-buffer, move up one buffer .IP "M-C-X C-N " down-buffer, move down one buffer .IP "M-C-X C-B " left-buffer, move left one buffer .IP "M-C-X C-F " right-buffer, move right one buffer .br .sp .LP \fB7.7.3 Resizing buffers\fP .IP "C-X ""1 " full-size-buffer, extend the size of the current buffer to screen size .IP "M-C-X ^ " grow-buffer, grow current buffer vertically .IP "M-C-X v " shrink-buffer, shrink current buffer vertically .IP "M-C-X < " widen-buffer, grow current buffer horizontally .IP "M-C-X > " narrow-buffer, shrink current buffer horizontally .br .br .sp .LP \fB7.8 Modes\fP .LP Unlike most other Emacs implementations, Origami does not seperate between major and minor modes\&. The mode default values can be set using command line switches: .sp .LP \fB7.8.1 Origami Command Line Options\fP .br .LP See also in: 1 EMacs Command Line Options .LP All modes are related to a buffer, they are set with C-X "m <mode-key> and deleted with C-X C-M <mode-key>\&. The following mode-keys are available: .IP """a " autosave, asks for a time interval and saves the text each time after this interval expires .IP """c " c-mode, syntax support for C .IP """d " show a menu for changing the used character display mode\&. This mode also can only be changed, not deleted\&. .IP """f " full-shift, moving over the right border of the screen will shift the whole buffer, not only the current line\&. .IP """i " autoindent, new lines will be indented as their predecessor .IP """l " set-language, sets a new language for fold comments\&. This mode can only be changed and not deleted\&. .IP """m " basic-regular-expression, search/replace will use regular expressions .IP """M " extended-regular-expression, search/replace will use extended expressions\&. .IP """n " no-parse, reading files will be done without fold parsing .IP """o " overwrite, new text overwrites existing text instead of being inserted .IP """p " position, always show current position in status line .IP """t " time, display the time right from the filename .IP """v " view, text can only be viewd but not changed .IP """V " If set, EMacs will be more verbose in some situations\&. .IP """w " wrap, wraps a word to the next line if neccessary .IP """# " hash-shifting .br .sp .LP \fB7.9 Arguments\fP .IP "M-<number> " set-argument-<number> (number can be a digit from 0 to 9), set number as argument for the next executed command\&. Any following typed digits will be part of the number\&. Most commands simply are executed number times, when prefixed by an argument\&. .br .sp .LP \fB7.10 Shell Commands\fP .sp .LP \fB7.10.1 shell\fP .IP "shift-command | C-X ""c " shell, starts a sub shell .br .sp .LP \fB7.10.2 shell-command\fP .IP "command | C-X ""! " shell-command, starts a sub shell with a given command .br .sp .LP \fB7.10.3 filter-buffer\fP .IP "C-X ""| " filter-buffer, first saves current file and then filters it through the specified filter command\&. .br .sp .LP \fB7.10.4 pipe-to-command\fP .IP "C-X ""> " pipe-to-command, feeds the command with the current file as standard input\&. .br .sp .LP \fB7.10.5 pipe-from-command\fP .IP "C-X ""< " pipe-from-command, inserts standard output from command at the current position\&. .br .sp .LP \fB7.10.6 make-it\fP .IP "M-x m " make-it, invoke make .br .sp .LP \fB7.10.7 compile-it\fP .IP "M-x c " compile-it, invoke C compiler .br .sp .LP \fB7.10.8 beautify-c-code\fP .IP "C-X ""i " beautify-c-code, filter buffer through beautifier .br .sp .LP \fB7.10.9 check-out\fP .IP "M-x o " check-out, checks current file out but does *not* reload the buffer\&. .br .sp .LP \fB7.10.10 check-in\fP .IP "M-x i " check-in, saves buffer and checks file in .br .sp .LP \fB7.10.11 spell-it\fP .IP "M-x s " spell-it, runs current file through spell and starts an interactive search and replace for all misspelled words\&. .br .br .sp .LP \fB7.11 More advanced functions\fP .sp .LP \fB7.11.1 C-Mode\fP .LP The following characters have a special meaning in C-mode: .LP .DS ( [ { ' " ; .DE Just play around to get used to them, once you are they save lots of typing\&. In C-mode words consist of letters, digits and underscores\&. .br .sp .LP \fB7.11.2 Tags\fP .sp .LP \fB7.11.2.1 enter-and-go-tags-buffer\fP .IP "M-\&. " enter-and-go-tags-buffer, prompt for tag and go to tagged position (open buffer, if needed) .IP "" filename-or-tag-completion can also be used\&. In this case, the first tag starting with the given text is used\&. .LP See also in: tags-mac-reference-file - 2 Tags file .br .sp .LP \fB7.11.2.2 find-and-go-tags-buffer\fP .IP "M-, " find-and-go-tags-buffer, like enter-and-go-tags-buffer, but use the word under the cursor .LP See also in: tags-mac-reference-file - 2 Tags file .br .sp .LP \fB7.11.2.3 set-user-tags-file\fP .IP "C-X t " set-user-tags-file, define a new tags file (empty input uses default tags files)\&. .LP See also in: tags-mac-reference-file - 2 Tags file .br .br .sp .LP \fB7.11.3 Macros\fP .sp .LP \fB7.11.3.1 start-define-macro\fP .IP "C-X ""( " define-macro, starts recording a keyboard macro .br .sp .LP \fB7.11.3.2 end-define-macro\fP .IP "C-X "") " define-macro, ends recording a keyboard macro .br .sp .LP \fB7.11.3.3 execute-macro\fP .IP "C-X ""e " execute-macro, executes a recorded keyboard macro .br .br .sp .LP \fB7.11.4 center-and-redraw-display\fP .IP "C-L " center-and-redraw-display, redraws screen bringing the current line to the middle of the screen\&. .br .sp .LP \fB7.11.5 redraw-display\fP .IP "refresh | M-C-L " redraw, redraws screen e\&.g\&. after write(1)s from other people etc\&. .br .sp .LP \fB7.11.6 describe-bindings\fP .IP "shift-help | C-X ""? " describe-bindings, shows all commands and where they are bound to .br .sp .LP \fB7.11.7 describe-fold\fP .IP "C-X ""= " describe-fold, gives you some information about your position in the text .br .sp .LP \fB7.11.8 quote-character\fP .IP "C-Q " quote-character, simply insert the next character and do not parse it as a command .br .sp .LP \fB7.11.9 filename-or-tag-completion\fP .IP "M-C-I " filename-or-tag-completion, complete a word to a filename\&. This function works everywhere, not only in prompts! If filename-or-tag-completion is used outside of prompts and if there is no filename to complete, Emacs tries to complete the started word as tag\&. .LP See also in: tags-mac-reference-file - 2 Tags file .br .sp .LP \fB7.11.10 fill-paragraph\fP .IP "M-q " fill-paragraph, fills paragraph from cursor to end of paragraph .br .sp .LP \fB7.11.11 set-fill-column\fP .IP "C-X ""f " set-fill-column, sets fill column to argument, or cursor position if none is given, or asks for it if cursor if at the left margin\&. .br .br .sp .LP \fB7.12 How to get out\fP .sp .LP \fB7.12.1 exit-origami\fP .IP "exit | C-X C-C " exit-origami .br .sp .LP \fB7.12.2 save-and-exit-origami\fP .IP "shift-exit | M-Z " save-and-exit-origami .br .sp .LP \fB7.12.3 suspend-origami\fP .IP "suspend | C-Z " suspend-origami .br .br .sp .LP \fB7.13 Funny Functions\fP .sp .LP \fB7.13.1 sokoban\fP .IP "M-X k " .sp .IP "" \fB7.13.1.1 sokoban\fP .br .br .sp .LP \fB7.13.2 towers-of-hanoi\fP .IP "M-X t " Play the well known game towers-of-hanoi at the bottom of the current buffer\&. set-argument can be used, to control the height\&. .br .br .br .br @reference-end @fi